Góp ý cho bạn:Trong file đính kèm, mình muốn giữ nguyên định dạng số hóa đơn, không biết VBA có thể làm được không. Các bạn tư vấn và giúp mình. Chân thành cảm ơn.
Cảm ơn bác đã góp ý. Cột C đến K trong sheet Kết quả, cháu có thể làm được. Vấn đề phát sinh của cháu là: làm sao cột B trong sheet kết quả giữ nguyên định dạng trong sheet Nguồn.Góp ý cho bạn:
1/ Bạn muốn người khác giúp thì nên diễn giải nội dung (tại bài 1) thật cụ thể, rỏ ràng người gíup có hiểu hết thì mới giúp được.
2/ Sheet NGUON: Không có cột nội dung Ngày, Diễn giải, TK đối ứng thì lấy cái gì để gán vào sheet KETQUA.
3/ Các khoản tính trừ-khác(521) là khoản gì lấy nó ở đâu thì bạn nên giải thích rỏ.
Tóm lại:
- Bạn nên giải thích càng cụ thể, rỏ ràng chừng nào thì kết quả mong muốn càng có kết quả sớm.
- Bạn nên giải thích rỏ thì sẽ có nhiều thành viên không trả lời. Lý do: Ngại việc phát sinh phải sửa code nhiều lần (vừa tốn thời gian của bạn và tốn thời gian của các thành viên khác).
Thì Format cột B là Text rồi lấy dữ liệu qua bình thường.Cảm ơn bác đã góp ý. Cột C đến K trong sheet Kết quả, cháu có thể làm được. Vấn đề phát sinh của cháu là: làm sao cột B trong sheet kết quả giữ nguyên định dạng trong sheet Nguồn.
Toàn bộ hình dáng code "đẹp trai/gái" của bạn đây, chạy thử xem.Cảm ơn bác đã góp ý. Cột C đến K trong sheet Kết quả, cháu có thể làm được. Vấn đề phát sinh của cháu là: làm sao cột B trong sheet kết quả giữ nguyên định dạng trong sheet Nguồn.
Sub LocKhac()
Dim Sarr, Darr, I As Long, k As Long, J As Long, DK1, DK2, DK3, DK4
With Sheet1
Sarr = .Range(.[B2], .[B400000].End(3)).Resize(, 23).Value
End With
ReDim Darr(1 To UBound(Sarr), 1 To 11)
k = 0
With Sheet2
DK1 = .[M1]
DK2 = .[N1]
For I = 1 To UBound(Sarr)
If Sarr(I, 3) = DK1 Then
If Sarr(I, 1) = DK2 Then
k = k + 1
Darr(k, 1) = Format(Sarr(I, 2), "0000000")
Darr(k, 2) = Sarr(I, 23)
Darr(k, 3) = Sarr(I, 22)
Darr(k, 4) = 131
Darr(k, 5) = Sarr(I, 9)
Darr(k, 6) = Sarr(I, 10)
Darr(k, 7) = Sarr(I, 11)
Darr(k, 8) = Sarr(I, 13)
End If
End If
Next
.[B12:K400000].ClearContents
If k Then
.[B12].Resize(k).NumberFormat = "@"
.[B12].Resize(k, 11).Value = Darr
End If
End With
End Sub
Cảm ơn bác Ba Tê rất nhiều.Toàn bộ hình dáng code "đẹp trai/gái" của bạn đây, chạy thử xem.
PHP:Sub LocKhac() Dim Sarr, Darr, I As Long, k As Long, J As Long, DK1, DK2, DK3, DK4 With Sheet1 Sarr = .Range(.[B2], .[B400000].End(3)).Resize(, 23).Value End With ReDim Darr(1 To UBound(Sarr), 1 To 11) k = 0 With Sheet2 DK1 = .[M1] DK2 = .[N1] For I = 1 To UBound(Sarr) If Sarr(I, 3) = DK1 Then If Sarr(I, 1) = DK2 Then k = k + 1 Darr(k, 1) = Format(Sarr(I, 2), "0000000") Darr(k, 2) = Sarr(I, 23) Darr(k, 3) = Sarr(I, 22) Darr(k, 4) = 131 Darr(k, 5) = Sarr(I, 9) Darr(k, 6) = Sarr(I, 10) Darr(k, 7) = Sarr(I, 11) Darr(k, 8) = Sarr(I, 13) End If End If Next .[B12:K400000].ClearContents If k Then .[B12].Resize(k).NumberFormat = "@" .[B12].Resize(k, 11).Value = Darr End If End With End Sub