Hồ Đức Hạ
Hồ Đức Hạ
Thảo luận 14 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 126 lượt xem

Hướng dẫn em chặn lấy dữ liệu từ một file đã lấy rồi

Thầy ơi ! Hướng dẫn em chặn lấy dữ liệu từ một file đã lấy rồi với ạ.

Thảo luận 14 câu trả lời
Lượt xem 126 lượt xem
Vỗ tay vỗ tay
Hồ Đức Hạ 09:10 - Oct 15, 2021

Chào bạn bạn làm như sau

cần tạo ra biến file để check xem dữ liệu để phân biệt đã có chưa, ở đây mình lấy theo cột A nếu dữ liệu đã có thì bạn import còn không có sẽ thoát file.

Dim file As Integer file = Application.WorksheetFunction.CountIf(Range("A6:A" & DongCuoi_KQ), wb_1.Sheets(1).Range("E2").Value) If (file = 0) Then 'B4: luu wb_KQ.Sheets("Data_TienLuong").Range("A" & DongCuoi_KQ + 1 & ":BM" & DongCuoi_KQ + KhoangCach).Value = _ wb_1.Sheets(1).Range("A" & DongDau_CT & ":BM" & DongCuoi_CT).Value End If
Dim file As Integer
file = Application.WorksheetFunction.CountIf(Range("A6:A" & DongCuoi_KQ), wb_1.Sheets(1).Range("E2").Value)
If (file = 0) Then
    'B4: luu
   wb_KQ.Sheets("Data_TienLuong").Range("A" & DongCuoi_KQ + 1 & ":BM" & DongCuoi_KQ + KhoangCach).Value = _
  wb_1.Sheets(1).Range("A" & DongDau_CT & ":BM" & DongCuoi_CT).Value
End If
Vỗ tay vỗ tay
Hồ Đức Hạ 19:10 - Oct 17, 2021

Dạ cám ơn Thầy

Vỗ tay vỗ tay
Hồ Đức Hạ 09:10 - Oct 18, 2021

Dạ em làm theo Thầy hướng dẫn rồi. Nhưng kết quả chỉ lấy dữ liệu một file duy nhất, còn lại mấy file khác không lấy được chỉ mở lên rồi đóng lại. Em nghiên cứu rồi mà không biết bị lỗi gì ạ, nhờ Thấy giúp cho ạ,

Sub ImportData_02()

'Error

    With Application.FileDialog(msoFileDialogFilePicker)

        .AllowMultiSelect = True

        If .Show = -1 Then

            Dim i As Integer

            For i = 1 To .SelectedItems.Count

                Dim Wbdata As Workbook, Wbsource As Workbook

                    Set Wbdata = ThisWorkbook

                    Set Wbsource = Workbooks.Open(.SelectedItems(i))

                Dim DD As Long

                    DD = 8

                Dim DCsource As Long

                    DCsource = Wbsource.Sheets(1).Range("E" & Rows.Count).End(xlUp).Row

                Dim KC As Integer

                    KC = DCsource - DD + 1

                Dim DCdata As Long

                    DCdata = Wbdata.Sheets("Sheet1").Range("E" & Rows.Count).End(xlUp).Row

                Dim file As Integer

                    file = Application.WorksheetFunction.CountIf(Range("A6:A" & DCdata), Wbsource.Sheets(1).Range("E2").Value)

                If file = 0 Then

                    Wbdata.Sheets("Sheet1").Range("A" & DCdata + 1 & ":MB" & DCdata + KC).Value = _

                        Wbsource.Sheets(1).Range("A" & DD & ":MB" & DCsource).Value

                End If

                Wbsource.Close SaveChanges:=False

            Next i

        End If

    End With

End Sub

Vỗ tay vỗ tay
Hồ Đức Hạ 10:10 - Oct 18, 2021

Chào bạn bạn debug xem vòng lặp chạy như thế nào nhé.

Vỗ tay vỗ tay
Hồ Đức Hạ 10:10 - Oct 18, 2021

Dạ Thầy, em thấy i =1 thì file = 0, còn i = 2,3,4 thì file = 18 không Thầy, nên nó bỏ qua code gán dữ liệu luôn.



Vỗ tay vỗ tay
Hồ Đức Hạ 10:10 - Oct 18, 2021

Bạn debug xem code chạy thế nào, mỗi lần lặp xem kết quả thế nào mới biết được nguyên nhân khi file =0 thì sẽ thêm

Vỗ tay vỗ tay
Hồ Đức Hạ 11:10 - Oct 18, 2021
Dạ theo em thấy thì cứ file đầu tiên thì i = 0, còn mấy file sau đều > 0 tùy theo số hàng của file muốn mở trừ cho 2.
Vỗ tay vỗ tay
Hồ Đức Hạ 11:10 - Oct 18, 2021

Dạ  lấy file đã gán dữ liệu trừ cho 2 mới đúng ạ

Vỗ tay vỗ tay
Hồ Đức Hạ 11:10 - Oct 18, 2021
file = Application.WorksheetFunction.CountIf(Range("A6:A" & DongCuoi_KQ), wb_1.Sheets(1).Range("E2").Value)

Phần này thực chất là so sánh xem cái trị tháng đã có chưa, nếu có rồi nghĩa là >0 thì sẽ không thêm nữa còn lại vẫn  thêm bình thường

Vỗ tay vỗ tay
Hồ Đức Hạ 11:10 - Oct 18, 2021

Dạ Thầy ! Dạ cứ file nào mở đầu tiên thì i = 1 và file  = 0, nhưng những file còn lại đều > 0 và giá trị bằng sồ hàng đã được gán dữ liệu trừ 2. VD ; trong trường hợp mở 4 file, thì file đầu tiên có i = 1, file = 0, còn file 2,3,4 thì i =2,3,4 nhưng file đều = 18 (do lúc đó số hàng dữ liệu được gán vào là 20 -2 = 18), tuong tự mình mở 3 file (2,3,4) thì file số 2 sẽ có i =1 và file = 0, nhưng lúc đó 2 file còn lại là 34 sẽ bằng 25 -2 = 23.



Vỗ tay vỗ tay
Hồ Đức Hạ 11:10 - Oct 18, 2021

Dạ theo như em nghĩ thì hàm countIf ko đếm theo điều kiện đó Thầy

Vỗ tay vỗ tay
Hồ Đức Hạ 13:10 - Oct 18, 2021

chào bạn bạn cần debug tại sheets hiện tại với dk là sheets bạn định import là được, bạn thử lại xem gitiho có làm thì kết quả đúng như yêu cầu của bạn

Vỗ tay vỗ tay
Hồ Đức Hạ 14:10 - Oct 18, 2021

Dạ Thầy, em làm được rồi ạ. Dạ cám ơn Thầy nhiều ạ. Em + 1 vào DCdata nữa ạ.

Vỗ tay vỗ tay
Hồ Đức Hạ 14:10 - Oct 18, 2021
Chúc bạn học tốt cùng gitiho khi code bạn cần phân tích yêu cầu rồi chuẩn hoá điều kiện rồi code nếu sai hãy debug đoạn đó sẽ thấy có lỗi hay không?
Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông