Nhờ các Bạn sửa giúp hàm IF để kết quả trả về là 1 ô blank

Liên hệ QC

ndhmoney686

Thành viên thường trực
Tham gia
25/4/12
Bài viết
376
Được thích
104
Giả xử mình có 1 ô dữ liệu là ô A8.
Và ô đặt công thức lấy kết quả là ô C8 (điều kiện của công thức là. Nếu ô A8 mà có dữ liệu thì lấy giá trị đó luôn. Còn nếu ô A8 mà ko có dữ liệu thì kết quả trả về là 1 ô blank.

Mình đang đặt công thức như sau
C8 =IF(A8<>"",A8,"") -> Thấy kết quả trả về ko phải là 1 ô blank các Bạn ah. Mong các Bạn nghĩ cách giúp mình để kết quả trả về là 1 ô blank (giống như 1 ô ban đầu chưa có dữ liệu) ko biết có làm được ko các Bạn? Mong các Bạn giúp. Cảm ơn các Bạn nhiều!
 
Em chào Anh QuangHai1969 và các bạn,
Cũng với file Anh QuangHai1969 đã sửa giúp bạn ở trên, đã chạy ra được danh sách duy nhất (với 3 vùng cùng trong 1 sheet). Em muốn nhờ Anh QuangHai1969 và các bạn giúp Em lấy 3 vùng đó đặt ở 3 sheet (sheet Nhập, sheet Xuất, sheet Tồn ĐK) và nếu có thể thì giúp Em lấy thêm số lượng vào các cột. Em cảm ơn!

View attachment 251078

Mã:
Option Explicit

Sub loc()
Dim data(), i, j, kq(1 To 10000, 1 To 3), dk, k
data = Range([A2], [A65536].End(3)).Resize(, 3).Value
With CreateObject("scripting.dictionary")
   For i = 1 To UBound(data)
      If data(i, 1) <> "" Then
         If data(i, 2) <> "" Then
            If data(i, 3) <> "" Then
               dk = data(i, 1) & data(i, 2) & data(i, 3)
               If Not .exists(dk) Then
                  k = k + 1
                  .Add dk, ""
                  For j = 1 To 3
                     kq(k, j) = data(i, j)
                  Next
               End If
            End If
         End If
      End If
   Next
End With
[G2].Resize(k, 3) = kq
End Sub
Mấy bài trên mình không xem lại ,chỉ xem code hiện tại và yêu cầu của bạn thì như thế này.
1.khai báo lại mảng KQ thành 4 chiều kq(1 To 10000, 1 To 4),sửa tham chiếu lấy dữ liệu thành
data = Range([A2], [A65536].End(3)).Resize(, 4).Value
2.Phần lấy thêm số lượng đại loại vầy
Mã:
If Not .exists(dk) Then
                  k = k + 1
                  .Add dk, k
                  For j = 1 To 4
                     kq(k, j) = data(i, j)
                  Next
                Else
                rws = .Item(dk)
                    kq(rws, 4) = kq(rws, 4) + data(i, 4)
               End If
3.gán kết quả như sau
Mã:
Sheet1.Range("A2").Resize(k, 4) = kq
Sheet2.Range("A2").Resize(k, 4) = kq
Sheet3.Range("A2").Resize(k, 4) = kq
Bài đã được tự động gộp:

lấy 3 vùng đó đặt ở 3 sheet (sheet Nhập, sheet Xuất, sheet Tồn ĐK)
Và có một thắc mắc nhỏ là cái sheets nhập lấy dữ liệu từ cột A đến cột D vào để lọc duy nhất,Bạn vấn muốn gán kết quả chồng lên vùng dữ liệu đó thì cần thêm dòng lệnh xóa dữ liệu trước khi gán kết quả mới nha
 
Lần chỉnh sửa cuối:
Upvote 0
Mấy bài trên mình không xem lại ,chỉ xem code hiện tại và yêu cầu của bạn thì như thế này.
1.khai báo lại mảng KQ thành 4 chiều kq(1 To 10000, 1 To 4),sửa tham chiếu lấy dữ liệu thành
data = Range([A2], [A65536].End(3)).Resize(, 4).Value
2.Phần lấy thêm số lượng đại loại vầy
Mã:
If Not .exists(dk) Then
                  k = k + 1
                  .Add dk, k
                  For j = 1 To 4
                     kq(k, j) = data(i, j)
                  Next
                Else
                rws = .Item(dk)
                    kq(rws, 4) = kq(rws, 4) + data(i, 4)
               End If
3.gán kết quả như sau
Mã:
Sheet1.Range("A2").Resize(k, 4) = kq
Sheet2.Range("A2").Resize(k, 4) = kq
Sheet3.Range("A2").Resize(k, 4) = kq

Em chào Anh,
Em sửa lại code thì nó mới lấy danh sách duy nhất và số lượng ở sheet NHẬP vào Bảng số liệu NXT. Còn danh sách và số lượng ở 2 sheet còn lại là sheet XUẤT và sheet TỒN ĐK thì chưa lấy được danh sách duy nhất vào bảng NXT (tức là lấy danh sách từ 3 sheet gộp lại để ra danh sách duy nhất vào bảng nxt) và số lượng chưa sang ạ. Mong Anh xem thêm giúp Em. Cảm ơn Anh!

1607704093902.png
Mã:
Option Explicit

Sub loc()
Dim data(), i, j, kq(1 To 10000, 1 To 4), dk, k, rws
data = Range([A2], [A65536].End(3)).Resize(, 4).Value
With CreateObject("scripting.dictionary")
   For i = 1 To UBound(data)
      If data(i, 1) <> "" Then
         If data(i, 2) <> "" Then
            If data(i, 3) <> "" Then
               dk = data(i, 1) & data(i, 2) & data(i, 3)
            If Not .exists(dk) Then
                  k = k + 1
                  .Add dk, k
                  For j = 1 To 4
                     kq(k, j) = data(i, j)
                  Next
                Else
                rws = .Item(dk)
                    kq(rws, 4) = kq(rws, 4) + data(i, 4)
               End If
             
             

            End If
         End If
      End If
   Next
End With
Sheet1.Range("G2").Resize(k, 4) = kq
Sheet2.Range("G2").Resize(k, 4) = kq
Sheet3.Range("G2").Resize(k, 4) = kq
End Sub
 

File đính kèm

  • Code loc danh sach duy nhat-1.xls
    99.5 KB · Đọc: 2
Upvote 0
Trước khi vào thì bạn chắc chắn cấu trước dữ liệu của bạn là như file trên không?để tránh phải chỉnh sửa nhiều lần thì nếu có thể bạn đưa hẳn dữ liệu chuẩn lên còn không thì đưa giả lập giống nhấp với file của bạn,hoặc bạn đăng bài mới,vì cấu trúc dữ liệu không giống nhau bài này cũng lâu rồi,bạn viết vào đây nhiều người không muốn đọc lại hết để hiểu nội dung kể chả người đã tham gia chưa chắc đã nhớ nội dung chính.còn cách làm thì như thế này
lấy dòng cuối của các sheets sau đó khai báo chiều của mạng,sau đó chạy vòng lặp để lọc rồi gán kết quả ra các sheets.
Bài đã được tự động gộp:

Điểm quan trọng nhất trong code trên là Mặt hàng + Lô Hàng + Kho hàng được lấy làm điều kiện để lọc,Nếu một trong rỗng thì sẽ bỏ qua hàng đó luôn,nếu cấu trúc của bạn không giống vậy thì cần chú ý điểm này
 
Lần chỉnh sửa cuối:
Upvote 0
Trước khi vào thì bạn chắc chắn cấu trước dữ liệu của bạn là như file trên không?để tránh phải chỉnh sửa nhiều lần thì nếu có thể bạn đưa hẳn dữ liệu chuẩn lên còn không thì đưa giả lập giống nhấp với file của bạn,hoặc bạn đăng bài mới,vì cấu trúc dữ liệu không giống nhau bài này cũng lâu rồi,bạn viết vào đây nhiều người không muốn đọc lại hết để hiểu nội dung kể chả người đã tham gia chưa chắc đã nhớ nội dung chính.còn cách làm thì như thế này
lấy dòng cuối của các sheets sau đó khai báo chiều của mạng,sau đó chạy vòng lặp để lọc rồi gán kết quả ra các sheets.
Bài đã được tự động gộp:

Điểm quan trọng nhất trong code trên là Mặt hàng + Lô Hàng + Kho hàng được lấy làm điều kiện để lọc,Nếu một trong rỗng thì sẽ bỏ qua hàng đó luôn,nếu cấu trúc của bạn không giống vậy thì cần chú ý điểm này
Dạ vâng, Em xin sửa lại bài trên với dữ liệu có thêm cột ngày. Trong file gồm có 3 sheet như sau:
1) Báo cáo NXT kho: (có 3 cột: Mặt hàng, Lô hàng, Kho hàng được lấy danh sách duy nhất từ 3 sheet gồm: sheet Tồn ĐK, sheet NHÂP, sheet XUẤT);
Nếu có thể thì chạy giúp Em thêm các cột: SL tồn ĐK, SL nhập trong kỳ, SL Xuất trong kỳ, SL Tồn cuối kỳ - được tính theo tháng)
2) sheet NHẬP (Em bổ sung thêm cột ngày - Để lên báo cáo NXT chọn được khoảng thời gian)
3) sheet Xuất (Em bổ sung thêm cột ngày - Để lên báo cáo NXT chọn được khoảng thời gian)
4) sheet Tồn ĐK
Mong Anh và các Bạn giúp đỡ. Em cảm ơn.

1607705704996.png
 

File đính kèm

  • NXT - Code loc danh sach duy nhat-1.xls
    118.5 KB · Đọc: 3
Upvote 0
Bạn tham khảo,sau hạn chế đặt tên sheets là tiếng việt có dấu nha,không vui
 

File đính kèm

  • GPE.xlsm
    27 KB · Đọc: 7
Upvote 0
Quên mất cái vụ chọn ngày .Bạn xem file mới,rồi tự kiểm tra kết quả,tôi viết xong mà lười đi so sánh KQ quá
 

File đính kèm

  • GPE.xlsm
    28.5 KB · Đọc: 7
Upvote 0
Bạn tham khảo,sau hạn chế đặt tên sheets là tiếng việt có dấu nha,không vui
- Em test kiểm tra thấy danh sách của 3 cột Mặt hàng, lô hàng, kho hàng lấy từ 3 sheet đã Ok rồi ạ. Em đã để số liệu các vùng số liệu theo giá trị (lúc trước em đang để RANDBETWEEN nên khi chạy code nó bị thay đổi số liên tục) Anh sửa lấy trên file ở bài này Anh nhé.
- Còn phần số lượng chưa ra được số lượng tồn đầu kỳ, nhập trong kỳ, xuất trong kỳ, tồn cuối kỳ - khi chọn ngày ở trên theo khoảng thời gian.
Em có cập nhật bảng bằng công thức ở bên cạnh với kết quả mong muốn - Em test thử ở phía dưới với thời gian nhập ở trên lần 1 là khoảng thời gian T11 và test lần 2 là khoảng thời gian của T12 Anh giúp Em code lấy được kết quả như bảng bên cạnh với nhé. Cảm ơn Anh nhiều!

1607711199890.png
 

File đính kèm

  • GPE 1.xlsm
    29.4 KB · Đọc: 5
Upvote 0
- Em test kiểm tra thấy danh sách của 3 cột Mặt hàng, lô hàng, kho hàng lấy từ 3 sheet đã Ok rồi ạ. Em đã để số liệu các vùng số liệu theo giá trị (lúc trước em đang để RANDBETWEEN nên khi chạy code nó bị thay đổi số liên tục) Anh sửa lấy trên file ở bài này Anh nhé.
- Còn phần số lượng chưa ra được số lượng tồn đầu kỳ, nhập trong kỳ, xuất trong kỳ, tồn cuối kỳ - khi chọn ngày ở trên theo khoảng thời gian.
Em có cập nhật bảng bằng công thức ở bên cạnh với kết quả mong muốn - Em test thử ở phía dưới với thời gian nhập ở trên lần 1 là khoảng thời gian T11 và test lần 2 là khoảng thời gian của T12 Anh giúp Em code lấy được kết quả như bảng bên cạnh với nhé. Cảm ơn Anh nhiều!

View attachment 251094
Bạn chắc chắn kết quả làm bằng tay của bạn là đúng chưa?
 
Upvote 0
Dạ, trên file Em gửi bài 28 là đúng Anh ạ
 
Upvote 0
Vậy bạn xem lại file chạy code rồi so sánh


Mặt hàng A1Lô hàng A1Kho hàng A1
của bạn và của tôi trong code,tôi xem thì code đã đúng bạn xem lại xem
 

File đính kèm

  • GPE 2.xlsm
    29.6 KB · Đọc: 7
Upvote 0
Vậy bạn xem lại file chạy code rồi so sánh


Mặt hàng A1Lô hàng A1Kho hàng A1
của bạn và của tôi trong code,tôi xem thì code đã đúng bạn xem lại xem

Trong Bảng NXT cột E "Tồn ĐK" được tính như sau Anh ạ:
Tồn ĐK = Tồn đầu năm + Nhập trong kỳ (với thời gian < ô C3) - Xuất trong kỳ (với thời gian < ô C3)
Anh cho Em thêm dòng Tổng cộng nữa với Anh nhé. Tks Anh!
Bài đã được tự động gộp:


Anh ơi, Sheet Tồn ĐK (chính số lượng Tồn đầu năm). Còn tồn đầu kỳ thì sẽ tính như công thức Em viết tô mầu ở trên, trong cùng bài này ạ.

1607713252348.png
 
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Vậy SL tồn cuối này tính như nào bạn ?View attachment 251098
Trong bảng Anh gửi chỉ cố mỗi cột SL Tồn ĐK là đang lệch thôi Anh ạ. Số đó là Anh đang lấy mỗi ở sheet "Tồn đầu năm" (lúc trước sơ xuất em đang để tên sheet là "Tồn ĐK" - Đúng ra để là "Tồn đầu năm" thì dễ hiểu hơn ạ. Em xin đính chính lại)
Em Ví dụ:
- Khi xem khoảng thời gian từ ngày 01/03/20 - 31/03/2020 (thì SL tồn đầu kỳ của ngày 01/03/2020 nó chính là tồn cuối ngày 29/02/2020)
- Khi xem khoảng thời gian từ ngày 01/04/20 - 30/04/2020 (thì SL tồn đầu kỳ của ngày 01/04/2020 nó chính là tồn cuối ngày 31/03/2020)
 
Upvote 0
Bạn làm đợit tí tôi xem lại cho

Vậy là tồn đầu kỳ và tồn cuối kỳ là tính theo 1 tháng hả?
Bài đã được tự động gộp:

Tồn ĐK = Tồn đầu năm + Nhập trong kỳ (với thời gian < ô C3) - Xuất trong kỳ (với thời gian < ô C3)
Tính như vậy thì phải lấy cả thời giàn trước ngày bắt đầu ở ô C3?
- Khi xem khoảng thời gian từ ngày 01/03/20 - 31/03/2020 (thì SL tồn đầu kỳ của ngày 01/03/2020 nó chính là tồn cuối ngày 29/02/2020)
- Khi xem khoảng thời gian từ ngày 01/04/20 - 30/04/2020 (thì SL tồn đầu kỳ của ngày 01/04/2020 nó chính là tồn cuối ngày 31/03/2020)
vấn đề nằm ở chỗ là cái số lượng tồn trước mỗi kỹ vậy không cố định,ví dụ bạn xem ngày từ ngày 5/6/2020-10/6/2020 thì lại phải đi tìm số lượng tồn đầu kỳ từ đầu năm tới ngày 4/6/2020 hay là tìm ngày 4/6/2020 là được.vì trong file bạn chỉ lấy có 1ngayf nhở hơn ngày C3 nên chả biết lấy tất cả cộng lại hay chỉ lấy 1 ngày đó (nếu chỉ lấy một ngày thì trong trường hợp nếu nó không có ngày 4/6/2020 mà ngày nhỏ nhất so với ngày C3 là ngày 1/4/2020 thì có lấy không) và ngày có được sắp xếp theo thứ tự tăng dần không để còn biết quy luật
 
Upvote 0
Vậy là tồn đầu kỳ và tồn cuối kỳ là tính theo 1 tháng hả?
Bài đã được tự động gộp:


Tính như vậy thì phải lấy cả thời giàn trước ngày bắt đầu ở ô C3?

vấn đề nằm ở chỗ là cái số lượng tồn trước mỗi kỹ vậy không cố định,ví dụ bạn xem ngày từ ngày 5/6/2020-10/6/2020 thì lại phải đi tìm số lượng tồn đầu kỳ từ đầu năm tới ngày 4/6/2020 hay là tìm ngày 4/6/2020 là được.vì trong file bạn chỉ lấy có 1ngayf nhở hơn ngày C3 nên chả biết lấy tất cả cộng lại hay chỉ lấy 1 ngày đó (nếu chỉ lấy một ngày thì trong trường hợp nếu nó không có ngày 4/6/2020 mà ngày nhỏ nhất so với ngày C3 là ngày 1/4/2020 thì có lấy không) và ngày có được sắp xếp theo thứ tự tăng dần không để còn biết quy luật

Dạ vâng, đúng như vậy Anh ạ
VD: Tính số liệu "Số dư ĐK"
- Số dư đầu năm 2018 (file có số liệu không quá nặng. Nên dùng liên tục qua các năm 2018, 2019, 2020....)
- Nếu xem từ ngày 05/06/2020 - 10/06/2020. Vậy file sẽ lấy toán bộ thời gian trước ngày 05/06/2020 (Tức ngày < C3, cứ nhỏ hơn ngày 05/06/2020 sẽ tính)
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ vâng, đúng như vậy Anh ạ
VD: Tính số liệu "Số dư ĐK"
- Số dư đầu năm 2018 (file có số liệu không quá nặng. Nên dùng liên tục qua các năm 2018, 2019, 2020....)
- Nếu xem từ ngày 05/06/2020 - 10/06/2020. Vậy file sẽ lấy toán bộ thời gian trước ngày 05/06/2020 (Tức ngày < C3, cứ nhỏ hơn ngày 05/06/2020 sẽ tính)
OK, giờ mới hiểu,chả nói từ đầu tôi lại không phải dân kế toán nên không biết,hôm nay bận quá,tí cơm nước xong tôi xem lại cho bạn nha

Bạn nhận lại file kiểm tra xem,và sau lưu ý là mấy bài quá lâu mà nội dung bài của bạn không giống thì nên đăng bài mới nha.
1.đào lại bài đã lâu nhưng người tham gia sẽ chả nhớ hay chả muốn đọc lại để xem nếu nội dung không đúng 100% như tiêu đề ( vì cái tiêu đề đa phần là tóm lược nội dung cần làm ở dây tiêu đề đọc xong cái hết liên quan tới bài của bạn) tôi là người trước không tham gia bài này cũng lười đọc lại code và nội dung các bài trên để xem người ta nói gì vì nó quá lâu rồi,thắc mắc không biết hỏi ai
2. là với tiêu đề và nội dung của bạn như thế này sau này có thành viên cần trợ giúp cùng nội dung như của bạn thì cũng chẳng bảo giờ nghĩ là tìm cái tiêu đề như thế này (Nhờ các Bạn sửa giúp hàm IF để kết quả trả về là 1 ô blank) để tìm ra cách lọc dữ liệu cả
Góp ý thế nha!
 

File đính kèm

  • GPE 2.xlsm
    30.8 KB · Đọc: 8
Upvote 0
Bạn nhận lại file kiểm tra xem,và sau lưu ý là mấy bài quá lâu mà nội dung bài của bạn không giống thì nên đăng bài mới nha.
1.đào lại bài đã lâu nhưng người tham gia sẽ chả nhớ hay chả muốn đọc lại để xem nếu nội dung không đúng 100% như tiêu đề ( vì cái tiêu đề đa phần là tóm lược nội dung cần làm ở dây tiêu đề đọc xong cái hết liên quan tới bài của bạn) tôi là người trước không tham gia bài này cũng lười đọc lại code và nội dung các bài trên để xem người ta nói gì vì nó quá lâu rồi,thắc mắc không biết hỏi ai
2. là với tiêu đề và nội dung của bạn như thế này sau này có thành viên cần trợ giúp cùng nội dung như của bạn thì cũng chẳng bảo giờ nghĩ là tìm cái tiêu đề như thế này (Nhờ các Bạn sửa giúp hàm IF để kết quả trả về là 1 ô blank) để tìm ra cách lọc dữ liệu cả
Góp ý thế nha!
Dạ vâng, Em sẽ rút kinh nghiệm ạ. Code chạy đúng như mong đợi rồi Anh ạ. Cảm ơn Anh rất rất nhiều!
 
Upvote 0
Web KT
Back
Top Bottom