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

Liên hệ QC

Người dùng đang xem chủ đề này

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!
 
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!

Đó là chuyện KHÔNG THỂ NÀO đâu bạn
Nên nhớ Blank Cell là cell chưa có gì trong đó. Nội cái chuyện trong cell đang chứa một công thức thì nó đã không thể gọi là Blank rồi
 
Upvote 0
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!

Bạn làm đúng rồi mà, vấn đề là A8 của bạn có <>"" hay không?

Mà nó không về rỗng dzậy chứ nó về là cái gì? gởi xem nào.
 

File đính kèm

Upvote 0
Đó là chuyện KHÔNG THỂ NÀO đâu bạn
Nên nhớ Blank Cell là cell chưa có gì trong đó, nội cái trong cell đang chứa một công thức thì nó đã không thể gọi là Blank rồi

Có lẽ bạn ấy dùng từ "giống như 1 ô ban đầu chưa có dữ liệu)" là cũng chứ chắc ý như thế đây Thầy, em nghĩ ý có gì khác.
 
Upvote 0
Đó là chuyện KHÔNG THỂ NÀO đâu bạn
Nên nhớ Blank Cell là cell chưa có gì trong đó. Nội cái chuyện trong cell đang chứa một công thức thì nó đã không thể gọi là Blank rồi


Có lẽ bạn ấy dùng từ "giống như 1 ô ban đầu chưa có dữ liệu)" là cũng chứ chắc ý như thế đây Thầy, em nghĩ ý có gì khác.


Cảm ơn Thầy ndu96081631 và Bạn tungnguyen_kt đã giúp đỡ Em! Em tạo 1 file lấy ví dụ thực tế rất mong Thầy và các Bạn cho Em giải pháp sửa hàm. hoặc sửa code Em đang dùng.
 
Lần chỉnh sửa cuối:
Upvote 0
Lúc nãy mình có đưa file lên. Để làm ví dụ, Nhưng file đó mình thấy ko hợp lý nên gỡ xuống và tải file mới lên với ví dụ sát hơn. Mong các Bạn giúp đỡ mình. Cảm ơn các Bạn!

Các Bạn có thể tải theo đường Link này http://www.mediafire.com/?ncj3ck16825kl1d
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình thấy nếu xóa công thức ở cột C thì cột G ko còn bị dòng cách quãng (cho nên mình nghĩ có cách nào để ô C6 công thức trả về kết quả là 1 ô BLANK. Thì sẽ giải quyết được vấn để dòng cách quãng ở cột G. Còn ko thì phải sửa code lọc ở cột G. Mong các Bạn giúp đỡ.
 
Upvote 0
Lúc nãy mình có đưa file lên. Để làm ví dụ, Nhưng file đó mình thấy ko hợp lý nên gỡ xuống và tải file mới lên với ví dụ sát hơn. Mong các Bạn giúp đỡ mình. Cảm ơn các Bạn!

Các Bạn có thể tải theo đường Link này http://www.mediafire.com/?ncj3ck16825kl1d

trong code của bạn có đoạn:
If Not IsEmpty(SubItem)...
sửa thành vầy là được:
If Len(SubItem)...
Tuy nhiên, phần triển khai code cũng chưa "đẹp" lắm. Tôi "bo" nó lại đây:
Mã:
Function UniqueArray(ParamArray Source()) As Variant
  Dim SourceItem, SubItem, tmpArr
  Dim Dict As Object, n As Long, tmp, tmp2 As String
  Set Dict = CreateObject("Scripting.Dictionary")
  ReDim tmpArr(1 To 65536, 1 To 1)
  For Each SourceItem In Source
    tmp = SourceItem
    If Not IsArray(tmp) Then tmp = Array(tmp)
    For Each SubItem In tmp
      tmp2 = CStr(SubItem)
      If Len(tmp2) Then
        If Not Dict.Exists(tmp2) Then
          n = n + 1
          Dict.Add tmp2, ""
          tmpArr(n, 1) = SubItem
        End If
      End If
    Next
  Next
  If n Then UniqueArray = tmpArr
  Set Dict = Nothing
End Function
Công thức tại cột G cũng đâu cần phải thông qua cột phụ, viết vầy:
=UniqueArray(A2:A19&B2:B19)
-------------------
Lưu ý:
- Bạn ReDim tmpArr(1 To 65536, 1 To 1) là điều phải xem lại (không tốt lắm)
- Chỉ dùng ParamArray khi bạn cảm thấy nó thật sự cần thiết (trường hợp trong file này là không cần)
 
Lần chỉnh sửa cuối:
Upvote 0
Code này của mình là code lọc danh sách duy nhất với nhiều vùng. Liệu có thể đặt cho code thêm 1 điều kiện lọc là. Nếu vùng dữ liệu lọc dòng nào mà kết quả là "" thì ko lấy kết quả "" đó vào danh sách. Các Bạn xem giúp mình 1 tay nhé!
 
Upvote 0
trong code của bạn có đoạn:
If Not IsEmpty(SubItem)...
sửa thành vầy là được:
If Len(SubItem)...
Tuy nhiên, phần triển khai code cũng chưa "đẹp" lắm. Tôi "bo" nó lại đây:
Mã:
Function UniqueArray(ParamArray Source()) As Variant
  Dim SourceItem, SubItem, tmpArr
  Dim Dict As Object, n As Long, tmp, tmp2 As String
  Set Dict = CreateObject("Scripting.Dictionary")
  ReDim tmpArr(1 To 65536, 1 To 1)
  For Each SourceItem In Source
    tmp = SourceItem
    If Not IsArray(tmp) Then tmp = Array(tmp)
    For Each SubItem In tmp
      tmp2 = CStr(SubItem)
      If Len(tmp2) Then
        If Not Dict.Exists(tmp2) Then
          n = n + 1
          Dict.Add tmp2, ""
          tmpArr(n, 1) = SubItem
        End If
      End If
    Next
  Next
  If n Then UniqueArray = tmpArr
  Set Dict = Nothing
End Function
Công thức tại cột G cũng đâu cần phải thông qua cột phụ, viết vầy:
=UniqueArray(A2:A19&B2:B19)
-------------------
Lưu ý: Bạn ReDim tmpArr(1 To 65536, 1 To 1) là điều phải xem lại (không tốt lắm)


Thầy ơi ok rồi Thầy ạ. Cảm ơn Thầy rất nhiều!


PS: Em để cột phụ đó để xử lý thủ công trong trường hợp của Em gộp nhiều cột và lấy nhiều vùng lại làm 1 danh sách duy nhất. Sau đó tách ra theo từng cột Thầy ạ.
 
Upvote 0
Thầy ơi ok rồi Thầy ạ. Cảm ơn Thầy rất nhiều!


PS: Em để cột phụ đó để xử lý thủ công trong trường hợp của Em gộp nhiều cột và lấy nhiều vùng lại làm 1 danh sách duy nhất. Sau đó tách ra theo từng cột Thầy ạ.

Dù sau đó có công đoạn tách ra thì cũng đâu cần cột phụ...
Ví dụ:
=UniqueArray(A2:A19&CHAR(1)&B2:B19)
CHAR(1) là ký tự đặc biệt, đóng vai trò dấu phân cách để sau này khi muốn tách ra nhiều cột ta dựa vào nó xác định vị trí
 
Upvote 0
Dù sau đó có công đoạn tách ra thì cũng đâu cần cột phụ...
Ví dụ:
=UniqueArray(A2:A19&CHAR(1)&B2:B19)
CHAR(1) là ký tự đặc biệt, đóng vai trò dấu phân cách để sau này khi muốn tách ra nhiều cột ta dựa vào nó xác định vị trí


Vậy Thầy và các Bạn chờ Em chút Em đưa trường hợp đó lên. Em tìm kiếm code lọc đó bao lâu nay chưa được. Toàn phải làm cột phụ để lọc thủ công. Mong Thầy và các Bạn giúp Em.
 
Lần chỉnh sửa cuối:
Upvote 0
Em tải file này lên Thầy và các Bạn giúp Em được thì tuyệt quá. Lâu nay Em tìm kiếm code lọc danh sách duy nhất từ 3 cột và từ 3 vùng dữ liệu. Để sau đó gộp lại làm 1 danh sách duy nhất. Mãi mà chưa được ạ.
Dùng cột phụ gộp lại rồi Lọc danh sách duy nhất bằng hàm thì hàm chạy ì ạch. Code hiện tại mà lọc 1 cột thôi thì nó chạy em thấy nhanh hơn so với công thức mảng rất là nhiều. Nhưng có cái là chưa lọc được từ 3 cột.
Hiện tại Em đang phải dùng cột phụ. Để sau đó dùng code lúc nãy lọc từ cột phụ ra 1 danh sách duy nhất. Rồi sau đó dùng hàm để tách ra các cột. Để có được kết quả cuối cùng là 1 danh sách duy nhất gồm 3 cột (Như vùng cột kết quả trong file đính kèm).
Rất mong nhận được sự giúp đỡ của Thầy và các Bạn trong trường hợp này.

Các Bạn có thể tải file theo đường Link này http://www.mediafire.com/?cbfxbncyxq6c088
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em tải file này lên Thầy và các Bạn giúp Em được thì tuyệt quá. Lâu nay Em tìm kiếm code lọc danh sách duy nhất từ 3 cột và từ 3 vùng dữ liệu. Để sau đó gộp lại làm 1 danh sách duy nhất. Mãi mà chưa được ạ.
Dùng cột phụ gộp lại rồi Lọc danh sách duy nhất bằng hàm thì hàm chạy ì ạch. Code hiện tại mà lọc 1 cột thôi thì nó chạy em thấy nhanh hơn so với công thức mảng rất là nhiều. Nhưng có cái là chưa lọc được từ 3 cột.
Hiện tại Em đang phải dùng cột phụ. Để sau đó dùng code lúc nãy lọc từ cột phụ ra 1 danh sách duy nhất. Rồi sau đó dùng hàm để tách ra các cột. Để có được kết quả cuối cùng là 1 danh sách duy nhất gồm 3 cột (Như vùng cột kết quả trong file đính kèm).
Rất mong nhận được sự giúp đỡ của Thầy và các Bạn trong trường hợp này.

Các Bạn có thể tải file theo đường Link này http://www.mediafire.com/?cbfxbncyxq6c088
Phải thế này không? Nhưng mà sao nội dung câu hỏi khác xa với nội dung của topic vậy trời?
PHP:
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
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Phải thế này không?
PHP:
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

Cảm ơn Anh Quang Hai! Anh ơi kết quả đúng rồi Anh ạ. Cái code này có thể xây dưng thành hàm tự tạo cho dễ dùng không Anh? Kiểu như code tự tạo ở bên trên Anh ạ. Để khi lấy các vùng dữ liệu từ các sheet cho nó tiện và dễ dùng. Mong Anh và các Bạn giúp đỡ!
 
Lần chỉnh sửa cuối:
Upvote 0
Hic mình có biết hàm tự tạo là cái gì đâu mà xây dựng chứ. Thấy bài nào thì xào bài đó thôi. Để xem có ai chế ra cái hàm tự tạo cho bạn hay không chứ mình thì hỏng biết vì kiến thức giới hạn quá.
 
Upvote 0
Hic mình có biết hàm tự tạo là cái gì đâu mà xây dựng chứ. Thấy bài nào thì xào bài đó thôi. Để xem có ai chế ra cái hàm tự tạo cho bạn hay không chứ mình thì hỏng biết vì kiến thức giới hạn quá.


Anh có thể giúp Em tạo ghi chú vào code cho các vùng dữ liệu tham chiếu được ko Anh?
Ví dụ:
- Vùng dữ liệu 1 (giả sử ở sheet1 từ ô A1:A8)
- Vùng dữ liệu 2 (giả sử ở sheet2 từ ô A14:A21)
- Vùng dữ liệu 3 (giả sử ở sheet3 từ ô A26:A21)
- Vùng đặt kết quả (giả ở sheet4 từ ô A1:A200)

Có 3 vùng quan trong đấy Anh giúp Em. Để Em biết cách sửa khi vùng tham chiếu thay đổi. Và kiểm soát được vùng đặt kết quả.
Mong Anh và các Bạn giúp đỡ.


PS: Anh giúp Em cho code tự động update khi vùng dữ liệu thay đổi thì vùng kết quả thay đổi theo.
 
Upvote 0
Anh có thể giúp Em tạo ghi chú vào code cho các vùng dữ liệu tham chiếu được ko Anh?
Ví dụ:
- Vùng dữ liệu 1 (giả sử ở sheet1 từ ô A1:A8)
- Vùng dữ liệu 2 (giả sử ở sheet2 từ ô A14:A21)
- Vùng dữ liệu 3 (giả sử ở sheet3 từ ô A26:A21)
- Vùng đặt kết quả (giả ở sheet4 từ ô A1:A200)

Có 3 vùng quan trong đấy Anh giúp Em. Để Em biết cách sửa khi vùng tham chiếu thay đổi. Và kiểm soát được vùng đặt kết quả.
Mong Anh và các Bạn giúp đỡ.


PS: Anh giúp Em cho code tự động update khi vùng dữ liệu thay đổi thì vùng kết quả thay đổi theo.
Mình không thể làm gì được với dạng dữ liệu giả sử đâu nhé....Giả sử thì không thể viết code đúng yêu cầu đâu. Hic mình thua rồi.
 
Upvote 0
Phải thế này không? Nhưng mà sao nội dung câu hỏi khác xa với nội dung của topic vậy trời?
PHP:
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

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!

1607700986648.png

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
 

File đính kèm

Upvote 0
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

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

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

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

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

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

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

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

Bài viết mới nhất

Back
Top Bottom