[Giúp đỡ] Lấy địa chỉ lắp đặt và số lượng vật tư theo danh mục từ bảng tổng hợp

Liên hệ QC

quyenpv

Thu nhặt kiến thức
Tham gia
5/1/13
Bài viết
709
Được thích
90
Giới tính
Nam
Nghề nghiệp
Decode cuộc đời!
Em chào các anh chị trên diễn đàn
Lâu quá em mới có thể vào diễn đàn vì vừa qua em bệnh gần 4 tháng mới khỏi, hiện tại mới đi làm lại chỗ mới do nghỉ ốm lâu nên thất nghiệp ạ
Em có vấn đề này mong anh chị giúp đỡ, do yêu cầu là phải lấy địa chỉ lắp đặt và số lượng vật tư theo danh mục từ bảng tổng hợp mà số liệu nhiều quá làm tay đôi khi nhầm lẫn do nhập số liệu từ bản nháp anh em đi nghiệm thu về và tạo từng biên bản cho chủng loại vật tư thi công. Nhờ anh chị giuep em đoạn code có thể từ bảng nghiệm thu có mã vật tư có thể lấy địa chỉ lắp đặt tại dòng A3 đến cột cuối cùng nếu thoả mãn điều kiện có mã vật tư có số lượng >0 từ cột B7 đến dòng cuối cùng
Mong các anh chị giúp đỡ em với ạ
Em cám ơn anh chị nhiều
Ban đầu từ bản giấy em phải nhập vào excel như thế này
1693447046324.png

Sau đó từ bảng tổng hợp em làm từng Sheet nghiệm thu (Bảng này em nhập tay dữ liệu mong muốn ạ)
1693465976659.png
 

File đính kèm

  • Help_GPE.xlsx
    37.5 KB · Đọc: 22
Lần chỉnh sửa cuối:

[Help] Lấy địa chỉ lắp đặt và số lượng vật tư theo danh mục từ bảng tổng hợp


III. Quy định về tiêu đề bài viết:Tiêu đề bài viết phải sử dụng bằng tiếng Việt có dấu đầy đủ

3. Tiêu đề cần được ghi rõ nghĩa, không được đặt những tiêu đề như: "Chỉ cho tôi với", "Help me", "Quan trọng đây!!!????", "Vào đây coi này", "Hay lắm", "Giúp mình với", "Admin ơi", v.v..
 
Lần chỉnh sửa cuối:
Upvote 0
Copy cả cụm rồi index số lượng vô. Cái nào giá trị bằng 0 thì ẩn đi là được mà. Code chi cho rắc rối ra
 
Upvote 0

[Help] Lấy địa chỉ lắp đặt và số lượng vật tư theo danh mục từ bảng tổng hợp


III. Quy định về tiêu đề bài viết:Tiêu đề bài viết phải sử dụng bằng tiếng Việt có dấu đầy đủ

3. Tiêu đề cần được ghi rõ nghĩa, không được đặt những tiêu đề như: "Chỉ cho tôi với", "Help me", "Quan trọng đây!!!????", "Vào đây coi này", "Hay lắm", "Giúp mình với", "Admin ơi", v.v..
Em đã sửa lại tiêu đề rồi anh
Bài đã được tự động gộp:

Copy cả cụm rồi index số lượng vô. Cái nào giá trị bằng 0 thì ẩn đi là được mà. Code chi cho rắc rối ra
Dạ số lượng Sheet lớn gần 50 Sheet làm thủ công em bị nhầm lẫn liên tục dò lại không biết sai ở chỗ nào ạ
 
Upvote 0
Trình bày câu hỏi thấy không ổn rồi. Nói thiệt, tôi có tật khó/không nhận ra được vấn đề với kiểu trình bày thế này.
 
Upvote 0
Em cũng đọc và xem đi xem lại mãi mà vẫn chưa hiểu.
Dạ mã vật tư tại Sheet BBNT sẽ nhập tay vì nó sẽ thay đổi theo mỗi Sheet, có thể thêm hoặc bớt mã vật tư tại từng Sheet ạ
Sao đó sẽ lấy địa chỉ và số lượng từ Sheet Input dựa vào mã vật tư có số lượng > 0 để đưa sang Sheet BBNT
 
Upvote 0
Dạ mã vật tư tại Sheet BBNT sẽ nhập tay vì nó sẽ thay đổi theo mỗi Sheet, có thể thêm hoặc bớt mã vật tư tại từng Sheet ạ
Sao đó sẽ lấy địa chỉ và số lượng từ Sheet Input dựa vào mã vật tư có số lượng > 0 để đưa sang Sheet BBNT
Ở ô G7 sheet nhập liệu có mã vật tư '0301-0944" tại vị trí "9 Ng C Trứ" sao lại không có bên Biên bản nghiêm thu mặc dù số lượng >0 nhỉ?
 
Upvote 0
Tóm lại là bạn muốn lấy dữ liệu từ Sheet Nghiệm thu đưa vào Sheet Tổng hợp hay ngược lại. Hay như nào. Trình bày xoay quần không hiểu gì hết trơn à.
 
Upvote 0
Ở ô G7 sheet nhập liệu có mã vật tư '0301-0944" tại vị trí "9 Ng C Trứ" sao lại không có bên Biên bản nghiêm thu mặc dù số lượng >0 nhỉ?
Dạ có thể em nhập tay mẫu bị sót ạ
Bài đã được tự động gộp:

Tóm lại là bạn muốn lấy dữ liệu từ Sheet Nghiệm thu đưa vào Sheet Tổng hợp hay ngược lại. Hay như nào. Trình bày xoay quần không hiểu gì hết trơn à.
Lấy từ Sheet Input tổng hợp sang Sheet BBNT ạ
 
Upvote 0
Em đã sửa lại tiêu đề rồi anh
Bài đã được tự động gộp:


Dạ số lượng Sheet lớn gần 50 Sheet làm thủ công em bị nhầm lẫn liên tục dò lại không biết sai ở chỗ nào ạ
Trong file mẫu, 1 sheet INPUT1 và 1 sheet BBNT
Nếu thực tế có nhiều sheet thì các sheet đó là thế nào?
INPUT1-BBNT1, INPUT2-BBNT2,...INPUTn-BBNTn hay thế nào?
Bạn cho thêm sheet vào để minh họa nhé
 
Upvote 0
Cám ơn anh/chị em đang chạy ra ngoài có việc xíu. Lát em xem và phản hồi lại ạ
Bài đã được tự động gộp:

Trong file mẫu, 1 sheet INPUT1 và 1 sheet BBNT
Nếu thực tế có nhiều sheet thì các sheet đó là thế nào?
INPUT1-BBNT1, INPUT2-BBNT2,...INPUTn-BBNTn hay thế nào?
Bạn cho thêm sheet vào để minh họa nhé
Chỉ có 1 Sheet Input duy nhất còn lại BBNT thêm ạ
 
Upvote 0
Vậy từ BBNT1 tới n khác nhau thế nào, khi nguồn chỉ là sheet INPUT?
 
Upvote 0
Em chào các anh chị trên diễn đàn
Lâu quá em mới có thể vào diễn đàn vì vừa qua em bệnh gần 4 tháng mới khỏi, hiện tại mới đi làm lại chỗ mới do nghỉ ốm lâu nên thất nghiệp ạ
Em có vấn đề này mong anh chị giúp đỡ, do yêu cầu là phải lấy địa chỉ lắp đặt và số lượng vật tư theo danh mục từ bảng tổng hợp mà số liệu nhiều quá làm tay đôi khi nhầm lẫn do nhập số liệu từ bản nháp anh em đi nghiệm thu về và tạo từng biên bản cho chủng loại vật tư thi công. Nhờ anh chị giuep em đoạn code có thể từ bảng nghiệm thu có mã vật tư có thể lấy địa chỉ lắp đặt tại dòng A3 đến cột cuối cùng nếu thoả mãn điều kiện có mã vật tư có số lượng >0 từ cột B7 đến dòng cuối cùng
Mong các anh chị giúp đỡ em với ạ
Em cám ơn anh chị nhiều
Ban đầu từ bản giấy em phải nhập vào excel như thế này
View attachment 294404

Sau đó từ bảng tổng hợp em làm từng Sheet nghiệm thu (Bảng này em nhập tay dữ liệu mong muốn ạ)
View attachment 294405
Trong khi chờ các phương án khác thử code này xem sao.
Mã:
Option Explicit

Sub TenNCC()
Dim i&, j&, Lr&, t&, k&
Dim Arr(), KQ(), Ten()
Dim Ws As Worksheet, Sh As Worksheet
Set Ws = Sheets("Input_TBi")
Lr = Ws.Cells(10000, 2).End(xlUp).Row
Arr = Ws.Range("B3:AT" & Lr).Value
ReDim KQ(1 To UBound(Arr, 2), 1 To UBound(Arr))
t = 1
For j = 6 To UBound(Arr, 2)
    If Arr(1, j) <> Empty Then
        t = t + 1: KQ(t, 1) = t - 1: KQ(t, 2) = Arr(1, j): k = 0
        For i = 6 To UBound(Arr)
            If Arr(i, 2) <> Empty Then k = k + 1: KQ(1, k + 2) = Arr(i, 1)
            If Arr(i, j) <> Empty Then KQ(t, k) = Arr(i, j)
        Next i
    End If
Next j
If t <> 0 Or k <> 0 Then
    Set Sh = Sheets("BBNT")
    Sh.Range("N3").Resize(10000, k).ClearContents
    Sh.Range("N3").Resize(t, k) = KQ
    Sh.Range("O" & t + 3) = "Công"
    Sh.Range("P" & t + 3).Resize(, k).FormulaR1C1 = "=SUM(R[-" & t + 1 & "]C:R[-1]C)"
End If
End Sub
Hy vọng đúng ý.
 
Upvote 0
Thêm cách khác tham khảo. Mã vật tư cố định.
Mã:
Option Explicit
Sub TongHopData()
    Dim Dic As Object, sArr(), Res(), i&, iRow&, iC&, iC_BBNT&, j&, K&
    Application.ScreenUpdating = 0
    Const R_sht As Long = 3
    Set Dic = CreateObject("scripting.dictionary")
    With Sheets("BBNT")
        iC_BBNT = .Cells(R_sht, Columns.Count).End(1).Column
        For j = 3 To iC_BBNT
            Dic(.Cells(R_sht, j).Value) = j
        Next
    End With
    With Sheets("Input_TBi")
        iRow = .Range("B" & Rows.Count).End(3).Row
        iC = .Cells(3, Columns.Count).End(1).Column
        If iRow < 8 Then MsgBox "Khong co data": Exit Sub
        sArr = .Range("A3").Resize(iRow - 2, iC).Value
    End With
    ReDim Res(1 To UBound(sArr) * UBound(sArr, 2), 1 To iC_BBNT + 1)
    For j = 7 To UBound(sArr, 2)
        For i = 6 To UBound(sArr)
            If sArr(i, j) > 0 Then
                If Dic.exists(sArr(i, 2)) = True Then
                    If Dic.exists(sArr(1, j)) = False Then
                        K = K + 1
                        Dic(sArr(1, j)) = K
                        Res(K, 1) = K
                        Res(K, 2) = sArr(1, j)
                        Res(K, Dic.Item(sArr(i, 2))) = sArr(i, j)
                    Else
                        Res(Dic.Item(sArr(1, j)), Dic.Item(sArr(i, 2))) = sArr(i, j)
                    End If
                End If
            End If
        Next
    Next
    With Sheets("BBNT")
        .Cells(R_sht + 1, 1).Resize(10000, iC_BBNT + 1).ClearContents
        .Cells(R_sht + 1, 1).Resize(10000, iC_BBNT + 1).Borders.LineStyle = 0
        .Cells(R_sht + 1, 1).Resize(K, iC_BBNT + 1).Value = Res
        .Cells(R_sht + 1, 1).Resize(K + 1, iC_BBNT + 1).Borders.LineStyle = 1
        .Cells(R_sht, 1).Offset(K + 1, 1).Value = "T" & ChrW(7892) & "NG"
        .Cells(R_sht, 1).Offset(K + 1, 2).Value = "=SUM(C4:C" & K + 3 & ")"
        .Cells(R_sht, 1).Offset(K + 1, 2).AutoFill Destination:=.Cells(R_sht, 1).Offset(K + 1, 2).Resize(, iC_BBNT - 2), Type:=xlFillDefault
    End With
    Set Dic = Nothing
    Application.ScreenUpdating = 1
End Sub
 
Upvote 0
Em chào các anh chị trên diễn đàn
Lâu quá em mới có thể vào diễn đàn vì vừa qua em bệnh gần 4 tháng mới khỏi, hiện tại mới đi làm lại chỗ mới do nghỉ ốm lâu nên thất nghiệp ạ
Em có vấn đề này mong anh chị giúp đỡ, do yêu cầu là phải lấy địa chỉ lắp đặt và số lượng vật tư theo danh mục từ bảng tổng hợp mà số liệu nhiều quá làm tay đôi khi nhầm lẫn do nhập số liệu từ bản nháp anh em đi nghiệm thu về và tạo từng biên bản cho chủng loại vật tư thi công. Nhờ anh chị giuep em đoạn code có thể từ bảng nghiệm thu có mã vật tư có thể lấy địa chỉ lắp đặt tại dòng A3 đến cột cuối cùng nếu thoả mãn điều kiện có mã vật tư có số lượng >0 từ cột B7 đến dòng cuối cùng
Mong các anh chị giúp đỡ em với ạ
Em cám ơn anh chị nhiều
Ban đầu từ bản giấy em phải nhập vào excel như thế này


Sau đó từ bảng tổng hợp em làm từng Sheet nghiệm thu (Bảng này em nhập tay dữ liệu mong muốn ạ)
Bên Bạn có trường hợp 1 địa điểm mà có nhiều vị trí thi công lắp đặt không? Ví dụ: Vị trí 1, vị trí 2, vị trí 3 ở địa điểm 9 Hoàng Hoa Thám
Bạn có tính đến trường hợp này chưa?
 
Upvote 0
Upvote 0
Web KT
Back
Top Bottom