Tổng hợp 2 sheet lại thành 1 bảng duy nhất

  • Thread starter trinh1308
  • Ngày gửi
Liên hệ QC
T

trinh1308

Guest
Mình có 1 bảng dữ liệu gồm tổng hợp vật tư gồm 4 sheet(4 hạng mục khác nhau), mỗi sheet có những vật tư giống nhau.Mình muốn tổng hợp vật tư vào 1 bảng ngang(Cùng 1 loại vật tư, hạng mục nào có cùng 1 vật tư thì cho vào một hàng).Lính mới vào nghề kg gửi được file(diễn đạt khó hiểu mong mọi người thông cảm).Mình ngồi nhặt thủ công, so từng tên vật tư, rồi lắp vào từng hạng mục tốc độ chậm, độ chính xác kg cao.Các cao thủ chỉ giúp mình với.
Cảm ơn mọi người trước.
 
Mình có 1 bảng dữ liệu gồm tổng hợp vật tư gồm 4 sheet(4 hạng mục khác nhau), mỗi sheet có những vật tư giống nhau.Mình muốn tổng hợp vật tư vào 1 bảng ngang(Cùng 1 loại vật tư, hạng mục nào có cùng 1 vật tư thì cho vào một hàng).Lính mới vào nghề kg gửi được file(diễn đạt khó hiểu mong mọi người thông cảm).Mình ngồi nhặt thủ công, so từng tên vật tư, rồi lắp vào từng hạng mục tốc độ chậm, độ chính xác kg cao.Các cao thủ chỉ giúp mình với.
Cảm ơn mọi người trước.
Bạn xem thêm các bài viết tại đây, mình nghĩ sẽ có ích cho bạn.

http://www.giaiphapexcel.com/forum/showthread.php?p=71200#post71200
 
các bạn chưa hiểu ý mình.Mình chưa gửi file đính kèm được mình ví dụ luôn nhé.
Ở sheet1(HM1) mình có 1 bảng tổng hợp giá trị vật tư (C1:C100:Tên vật tư; D1:D100:Khối lượng,E1:E100:Đơn giá).
Tương tự ở sheet2(HM2) mình cũng có 1 bảng giá trị vật tư như vậy nhưng có thêm 1 số vật tư khác với vật tư ở sheet1.
Mình muốn tổng hợp 2 sheet lại thành 1 bảng duy nhất nhưng ở cột khối lượng sẽ tách ra thành 1 cột khối lượng HM1 và 1 cột khối lượng HM2, những vật tư giống nhau có cùng 1 đơn giá xếp thành 1 hàng.
Xin lỗi mình kg gửi file lên được, dù sao cũng cảm ơn bài viết của bạn.
 
các bạn chưa hiểu ý mình.Mình chưa gửi file đính kèm được mình ví dụ luôn nhé.
Ở sheet1(HM1) mình có 1 bảng tổng hợp giá trị vật tư (C1:C100:Tên vật tư; D1:D100:Khối lượng,E1:E100:Đơn giá).
Tương tự ở sheet2(HM2) mình cũng có 1 bảng giá trị vật tư như vậy nhưng có thêm 1 số vật tư khác với vật tư ở sheet1.
Mình muốn tổng hợp 2 sheet lại thành 1 bảng duy nhất nhưng ở cột khối lượng sẽ tách ra thành 1 cột khối lượng HM1 và 1 cột khối lượng HM2, những vật tư giống nhau có cùng 1 đơn giá xếp thành 1 hàng.
Xin lỗi mình kg gửi file lên được, dù sao cũng cảm ơn bài viết của bạn.

Thế này mà nói chuyển dữ liệu từ hàng dọc về hàng ngang , thật là bó chiếu, gửi file cho tui, tui pośt giùm để anh em cùng nghiên cứu (có thể làm thủ công 1 ít để anh em dễ dàng đoán và làm theo đúng ý bạn)
 
mình gửi cho boyxin rùi đấy,up lên hộ mình với.

GỬI FILE GIÚP BẠN trinh1308 MONG ĐƯỢC CÁC BẠN GIÚP ĐỠ

--------------------------------------------------------------------------------
Mình mới xem qua, file của bạn nhiều Sheet thế, bàn phải nói rõ cần ghép số liệu ở những Sheet nào vào với nhau, kết quả ghép để ở đâu, .... càng rõ ràng, cụ thể, chi tiết thì anh em mới có thể giúp bạn nhanh chóng được
 

File đính kèm

  • Tong hop vat tu(gui file).rar
    50 KB · Đọc: 85
Lần chỉnh sửa cuối:
ghép số liệu ở 4sheet(Thầu, tăng do tính thiếu,BS đợt 1m BS đợt 2), kết quả ghép để ở sheet vật tư.
Sheet đấy mình đã ghép rùi nhưng thủ công.Mình muốn hỏi cách nào ghép nhanh hơn.
 
Theo mình thì bạn sử dụng hàm Sumif() sẽ giải quyết được vấn đề.
 
Mình có 1 bảng dữ liệu gồm tổng hợp vật tư gồm 4 sheet(4 hạng mục khác nhau), mỗi sheet có những vật tư giống nhau.Mình muốn tổng hợp vật tư vào 1 bảng ngang(Cùng 1 loại vật tư, hạng mục nào có cùng 1 vật tư thì cho vào một hàng).Lính mới vào nghề kg gửi được file(diễn đạt khó hiểu mong mọi người thông cảm).Mình ngồi nhặt thủ công, so từng tên vật tư, rồi lắp vào từng hạng mục tốc độ chậm, độ chính xác kg cao.Các cao thủ chỉ giúp mình với.
Cảm ơn mọi người trước.

Bạn xem thế này đã được chưa?

rar.gif
boyxin Loc Sort DS.rar (lọc và sắp xếp danh sách )​
 
Lần chỉnh sửa cuối:
tổng hợp sang khối lượng thì được rùi bạn ah. Cho mình hỏi thêm cái này.
Ở sheet Thầu,Tăng do tính thiếu và bổ sung đợt 1 do có cùng 1 đơn giá nên những vật tư giống nhau thì trả về cùng 1 đơn giá(Lấy đơn giá ở sheet nào cũng được), còn những vật tư khác nhau thì trả về đúng đơn giá của vật tư nằm trong sheet đấy(Mình muốn tự động luôn phần này).
Thx boyxin nhiều.(boyxin ở HN mời boy 1 chầu cafe hihi)

quên, cho mình hỏi luôn ở sheet vật tư, bạn tổng hợp tên vật như thế nào.(Không hiểu cái công thức của bạn).
 
Chỉnh sửa lần cuối bởi điều hành viên:
quên, cho mình hỏi luôn ở sheet vật tư, bạn tổng hợp tên vật như thế nào.(Không hiểu cái công thức của bạn).

  1. Tên vật tư được lấy bằng phương pháp Lọc duy nhất từ tên vật tư có trong 4 sheet ... (nếu có trùng nhau thì chỉ lấy 1 lần)
  2. UnHide sheet Temp sẽ rõ vấn đề này
 
Bạn nói rõ hơn về Unhide sheet Temp được kg?
Cách mình hay sử dụng là copy tên vật tư của 4sheet về 1 sheet rồi lọc thủ công, những vật tư giống nhau mình delete đi.
 
Bạn nói rõ hơn về Unhide sheet Temp được kg?
Cách mình hay sử dụng là copy tên vật tư của 4sheet về 1 sheet rồi lọc thủ công, những vật tư giống nhau mình delete đi.

Vào Format \ Sheet \ UnHide... sẽ hiện lên hộp thoại, trong đó có tên sheet đang bị ẩn, chọn sheet ẩn (Temp) rồi nhấn OK thế là sheet Temp đã được UnHide
Làm thủ công như vậy, nếu ít thì đỡ, giả sử có khoẳng vài nghìn dòng thì bạn làm đến bao giờ he he he
 
Đây là cách lập danh sách duy nhất từ 4 sheets, bạn tham khảo

quên, cho mình hỏi luôn ở sheet vật tư, bạn tổng hợp tên vật như thế nào.(Không hiểu cái công thức của bạn).

PHP:
Option Explicit

Sub QTVatTu()
 Dim lRow As Long, jW As Long, Jj As Long, lRowC As Long
 Dim bZ As Byte, bBD As Byte
 Dim Sht As Object, Rng As Range
 
 Sheet6.Range("A9:N" & Sheet6.[d65432].End(xlUp).Row + 9).Clear
 For jW = 1 To 4
    Set Sht = Sheets(jW)
    lRow = Sht.[B65432].End(xlUp).Row
    If jW <> 2 Then
        Set Sht = Sht.Range("C6:D" & lRow)
    Else
        Set Sht = Sht.Range("C8:D" & lRow)
    End If
    CopySh Sht
 Next jW
 
 Sheet6.Range("D8:E8").Copy Destination:=Sheet6.[b9]
 lRow = Sheet6.[d65432].End(xlUp).Row
 Set Sht = Sheet6.Range("D8:E" & lRow)
 Sht.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
    "B9:C9"), Unique:=True
    Rows("9:9").Delete Shift:=xlUp
    Range("D9:E" & lRow + 9).Clear
 lRow = Sheet6.[B65432].End(xlUp).Row
 For bZ = 1 To 4
    Set Sht = Sheets(bZ)
    lRowC = Sht.[B65432].End(xlUp).Row
    If bZ <> 2 Then bBD = 6 Else bBD = 8
    For Jj = bBD To lRowC
    
        With Worksheets(6).Range("B9:B" & lRow)
            Set Rng = .Find(Sht.Cells(Jj, 2), LookIn:=xlValues)
            If Not Rng Is Nothing Then
                Rng.Offset(, 3 + bZ) = Sht.Cells(Jj, 5)
            End If
        End With
        
    Next Jj
 Next bZ
 
End Sub

Mã:
Sub CopySh(Sh As Object)
 Sh.Copy Destination:=Sheet6.Range("D" & _
    Sheet6.[d65432].End(xlUp).Row + 1)
End Sub

Sheet6 ứng với sheet chưa xài của bạn;
Nếu bạn cần, mình sẽ đưa lên tại đây kết quả của sự lọc; Nó nhiềiu hơn của bạn, có lẽ do lỗi chính tả khi nhập!
 
  1. Tên vật tư được lấy bằng phương pháp Lọc duy nhất từ tên vật tư có trong 4 sheet ... (nếu có trùng nhau thì chỉ lấy 1 lần)
    Mình gửi kèm theo file phần mềm đã lọc vật tư nhưng không biết nó dùng cách gì, áp dụng nó để giải bài toán của mình. Đọc mãi vẫn không hiểu cái cách của bạn.
    Sheet (Tong Hop Vat Tu) được lọc ra từ sheet phân tích vật tư.
 
=IF(ROWS($1:1)<=COUNTA(VatTu1).INDEX(VatTu1.ROWS($1:1)).IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2).INDEX(VatTu2.ROWS($1:1)-COUNTA(VatTu1)).IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2)+COUNTA(VatTu3).INDEX(VatTu3.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)).INDEX(VatTu4.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)-COUNTA(VatTu3)))))
Giải thích giúp mình dòng lệnh này thôi.
 
=IF(ROWS($1:1)<=COUNTA(VatTu1).INDEX(VatTu1.ROWS($1:1)).IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2).INDEX(VatTu2.ROWS($1:1)-COUNTA(VatTu1)).IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2)+COUNTA(VatTu3).INDEX(VatTu3.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)).INDEX(VatTu4.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)-COUNTA(VatTu3)))))
Giải thích giúp mình dòng lệnh này thôi.
THẾ NÀY NHÉ
PHP:
=IF(ROWS($1:1)<=COUNTA(VatTu1).INDEX(VatTu1.ROWS($1:1)).
IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2).INDEX(VatTu2.ROWS($1:1)-COUNTA(VatTu1)).
IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2)+COUNTA(VatTu3).INDEX(VatTu3.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)).
INDEX(VatTu4.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)-COUNTA(VatTu3)))))
  1. ROWS($1:1) đây là biến đếm, khi kéo fill xuống thì sẽ được các số 1,2,3,... ứng với mỗi dòng tiếp theo
  2. VatTu1, VatTu2, VatTu3, VatTu4 là các name tên của các vật tư trong 4 sheet cần tổng hợp (mỗi cái tên ta gọi là 1 phần tử)
  3. COUNTA(VatTu1) tương tự cho COUNTA(VatTu2), COUNTA(VatTu3), COUNTA(VatTu4) là đếm trong các name VatTu... xem có bao nhiêu phần tử (tên vật tử)
  4. INDEX(VatTu1.ROWS($1:1)) lấy ra trong dãy các tên trong name VatTu... phần tử thứ ROWS($1:1)
  5. Hàm IF chắc bạn đã biết ... bạn tách ra thành từng hàm IF riêng biệt sẽ nhìn thấy rõ hơn
    (1)IF(ROWS($1:1)<=COUNTA(VatTu1).
    (2)__INDEX(VatTu1.ROWS($1:1)).
    (3)__IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2).
    (4)____INDEX(VatTu2.ROWS($1:1)-COUNTA(VatTu1)).
    (5)____IF(ROWS($1:1)<=COUNTA(VatTu1)+COUNTA(VatTu2)+COUNTA(VatTu3).
    (6)______INDEX(VatTu3.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)).
    (7)______INDEX(VatTu4.ROWS($1:1)-COUNTA(VatTu1)-COUNTA(VatTu2)-COUNTA(VatTu3)))))
  6. Dịch nom na toàn bộ câu lệnh trên như sau:
    Xét sheet thứ nhất
    Nếu chưa hiện hết tên các vật tư thì tiếp tực hiện nốt các tên vật tư còn lại
    Nếu hiện hết các tên vật tư trong sheet thứ nhất thì chuyển sang sheet thứ 2
    Xét sheet thứ 2
    Nếu chưa hiện hết tên các vật tư thì tiếp tực hiện nốt các tên vật tư còn lại
    Nếu hiện hết các tên vật tư trong sheet thứ 2 thì chuyển sang sheet thứ 3
    Xét sheet thứ 3
    Nếu chưa hiện hết tên các vật tư thì tiếp tực hiện nốt các tên vật tư còn lại
    Nếu hiện hết các tên vật tư trong sheet thứ 3 thì chuyển sang sheet thứ 4
    Xét sheet thứ 4
    Nếu chưa hiện hết tên các vật tư thì tiếp tực hiện nốt các tên vật tư còn lại
    Nếu hiện hết các tên vật tư trong sheet thứ 4 thì để ô trống
Cụ thể là về các dòng trong câu lệnh được cắt ra là:
  1. Hàm IF thứ nhất và điều kiện kiểm tra của hàm IF thứ nhất (đ/k1)
  2. Nếu thỏa mãn đ/k1 thì thực hiện câu lệnh này hàm INDEX (màu đen̉) Nếu không thỏa mãn đ/k1 thì thực hiện hàm IF thứ 2
  3. Hàm IF thứ 2 và điều kiện kiểm tra của hàm IF thứ 2 (đ/k2)
  4. Nếu thỏa mãn đ/k2 thì thực hiện câu lệnh này hàm INDEX (màu tím̉) Nếu không thỏa mãn đ/k2 thì thực hiện hàm IF thứ 3
  5. Hàm IF thứ 3 và điều kiện kiểm tra của hàm IF thứ 3 (đ/k3)
  6. Nếu thỏa mãn đ/k3 thì thực hiện câu lệnh này hàm INDEX (màu xanh̉)
  7. Nếu không thỏa mãn đ/k3 thì thực hiện hàm INDEX (cuối cùng màu đỏ)
Không biết là với bài tẩm quất gia truyền thế này có làm cho bạn khoan khoái, đả thông kinh mạch chưa
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom