Gộp các mặt hàng giống nhau cùng đơn giá thành 1 dòng

Liên hệ QC

Yeswrong

Thành viên mới
Tham gia
18/1/07
Bài viết
22
Được thích
6
Em muốn tìm các mặt hàng giống nhau cùng đơn giá và cộng lại thành 1 dòng.
Chi tiết như mô tả trong att xin các anh chị giúp đỡ
Dùng hàm càng tốt vì em hông biết làm Macro
 

File đính kèm

  • Book2.xls
    18 KB · Đọc: 63
Muốn dùng hàm thì tạm thêm 2 cột phụ để tính, chưa nghĩ ra cách khác.
 

File đính kèm

  • Copy of Book2.rar
    4.7 KB · Đọc: 56
Em muốn tìm các mặt hàng giống nhau cùng đơn giá và cộng lại thành 1 dòng.
Chi tiết như mô tả trong att xin các anh chị giúp đỡ
Dùng hàm càng tốt vì em hông biết làm Macro
Bài này mà có dùng hàm thì cũng phải sử dụng name cho nó gọn
Gộp bằng tay nên bạn gộp thiếu "thằng" WA1-7660
 

File đính kèm

  • gom(1).xls
    24.5 KB · Đọc: 52
Bạn test thử hàm này xem sao (2 trong 1 luôn)
Mã:
Function Dsach(Rng1 As Range, Rng2 As Range, Gia As Integer, Id As Integer)
Dim Uni As New Collection
Dim i As Integer, tam
On Error Resume Next
For i = 1 To Rng1.Count
Uni.Add Rng1(i).Value & ";" & Rng2(i).Value, _
CStr(Rng1(i).Value & ";" & Rng2(i).Value)
Next i
tam = Split(Uni(Id), ";")
Dsach = tam(Gia)
If Gia = 1 Then Dsach = Val(Dsach)
End Function

Tìm Mã thứ i trong danh sách =DSACH(Vung_ma,Vung_gia,0,i) .................. (Mã=0, Gia=1)
Tìm Giá thứ i trong danh sách =DSACH(Vung_ma,Vung_gia,1,i) ..................(Mã=0, Gia=1)
 

File đính kèm

  • Copy of Book2.xls
    39.5 KB · Đọc: 48
Thêm 1 con macro nữa cho vui cửa nhà, khà, khà,. . .

PHP:
Option Explicit

Sub DeleteDublicate()
 Dim Rng As Range, sRng As Range, Cls As Range, dRng As Range
 Dim MyAdd As String
 Dim eRw As Long, jJ As Long
 
 Set Cls = [B1].CurrentRegion:      [A23].Resize(Cls.Rows.Count, 9).Clear
 Cls.Copy Destination:=[A23]
 eRw = [B65500].End(xlUp).Row:      Set dRng = Cells(eRw + 2, "B")
 For jJ = 24 To eRw
   Set Cls = Cells(jJ, 2):          Set Rng = Range(Cls.Offset(1), Cells(eRw, 2))
   Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      Do
         If sRng.Offset(, 4).Value = Cls.Offset(, 4).Value Then
            Set dRng = Union(dRng, sRng)
         End If
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
 Next jJ
9 ' dRng.Interior.ColorIndex = 38'
  dRng.EntireRow.Delete '
End Sub
 
Em muốn tìm các mặt hàng giống nhau cùng đơn giá và cộng lại thành 1 dòng.
Chi tiết như mô tả trong att xin các anh chị giúp đỡ
Dùng hàm càng tốt vì em hông biết làm Macro

Dạng bảng tính này mà dùng Pivot là hợp lý nhất chứ nhỉ?
 

File đính kèm

  • Book2tonghopPIVOT.xls
    32.5 KB · Đọc: 41
Bồ tèo ơi, xem lại coi:
B5: WA1-7660 có đơn giá là 0.029
B14: WA1-7660 có đơn giá là 0.049
Hihi, tối qua mắt nhắm mắt mở "hổng" coi kỹ
Cám ơn TTT
Trật thì làm lại, tại tác giả muốn công thức nên hơi "zắc zối" tí tẹo
Híc
 

File đính kèm

  • gom(123).rar
    4.9 KB · Đọc: 36
Hihi, tối qua mắt nhắm mắt mở "hổng" coi kỹ
Cám ơn TTT
Trật thì làm lại, tại tác giả muốn công thức nên hơi "zắc zối" tí tẹo
Híc

=IF(ROW(A1)>COUNT(cot);"";INDEX($B$2:$F$17;SMALL(cot;ROW(A1));1)) - KQ khi nhấn F9 là ={"VV1-9163"}
=IF(ROWS($A$1:A1)>COUNT(cot);"";INDEX($B$2:$F$17;SMALL(cot;ROWS($A$1:A1));1)) - KQ khi nhấn F9 là VV1-9163
2 cái này lợi, hại như thế nào xin chỉ giáo luôn đi "Bồ tèo".
 
Hi!!!Không riêng bài này, mình thấy có rất nhiều bài khác cũng rơi vào tình trạng này: Anh em vốn sẵn nhiệt thành cùng mọi người nên mỗi khi có ai yêu cầu điều gì đều chung tay giải quyết tuỳ món, tuỳ chiêu. Ấy vậy mà chẳng thấy chủ Topic đâu cả, đúng sai ra sao chẳng thấy hồi âm. Quay đi, quay lại toàn thấy "quân xanh" cả. Có lúc mình nghĩ hay là ai đó ghé qua thả vài câu rồi cũng chẳng cần biết kết quả nữa. Nếu vậy thì phí công anh em quá.
 
Lần chỉnh sửa cuối:
=IF(ROW(A1)>COUNT(cot);"";INDEX($B$2:$F$17;SMALL(cot;ROW(A1));1)) - KQ khi nhấn F9 là ={"VV1-9163"}
=IF(ROWS($A$1:A1)>COUNT(cot);"";INDEX($B$2:$F$17;SMALL(cot;ROWS($A$1:A1));1)) - KQ khi nhấn F9 là VV1-9163
2 cái này lợi, hại như thế nào xin chỉ giáo luôn đi "Bồ tèo".
Cái này nói bao nhiêu lần rồi nhưng chẳng mấy người nghe lọt tai!
Hic...
Nói lại: Tốt nhất bạn đừng bao giờ dùng ROW... phải dùng ROWS mới là chắc chắn ---> Lưu ý rằng hàm ROW là hàm mảng, còn ROWS lại là 1 hàm bình thường
Ngoại trừ trường hợp cần thiết khi bạn cố ý muốn tạo ra 1 mảng nào đó và nhất thiết phải có hàm ROW mới xong thì hẳn dùng (ví dụ trường hợp ROW(INDIRECT("1:"&..... )
Nói thêm: hãy sửa ROWS($A1:A1) thành ROWS($1:1) cho nó gọn (chỉ quan tâm đến dòng, không quan tâm đến cột)
 
Lần chỉnh sửa cuối:
=IF(ROW(A1)>COUNT(cot);"";INDEX($B$2:$F$17;SMALL(cot;ROW(A1));1)) - KQ khi nhấn F9 là ={"VV1-9163"}
=IF(ROWS($A$1:A1)>COUNT(cot);"";INDEX($B$2:$F$17;SMALL(cot;ROWS($A$1:A1));1)) - KQ khi nhấn F9 là VV1-9163
2 cái này lợi, hại như thế nào xin chỉ giáo luôn đi "Bồ tèo".
Hihi, cái "zụ" này cao thủ Ndu đã phân tích nhiều, nhưng tùy biến vào từng bài ta vẫn sử dụng Ok . Hàm Row là hàm mảng, nhưng ROW(A1) trả về kết quả là một mảng có chứa ....1 giá trị nên phù hợp với mục đích của bài ( trong bài ta muốn trả về giá trị là 1)
Mình thường viết như thế vì nhập ROW(A1) sẽ nhanh hơn ROWS($1:1)
Trong những bài lọc duy nhất bằng công thức người ta thường tạo mảng bằng công thức ROW(INDIRECT(.......) trả về kết quả là một mảng số liên tục mà ta dù có di chuyển bảng dữ liệu lung tung thì kết quả đó vẫn không thay đổi, nhưng nếu tùy vào bài hoặc dữ liệu là của mình thì mình sẽ viết ROW(VUNG DỮ LIỆU)-KHOẢNG CÁCH TỪ CELL ĐẦU TIÊN CỦA DỮ LIỆU NGƯỢC VỀ A1 ==> kết quả thu được vẫn như nhau nhưng nhập công thức thì "phẻ" hơn "zất zất" nhiều
Híhi, tùy biến mà áp dụng thôi TTT ơi
 
Hi!!!Không riêng bài này, mình thấy có rất nhiều bài khác cũng rơi vào tình trạng này: Anh em vốn sẵn nhiệt thành cùng mọi người nên mỗi khi có ai yêu cầu điều gì đều chung tay giải quyết tuỳ món, tuỳ chiêu. Ấy vậy mà chẳng thấy chủ Topic đâu cả, đúng sai ra sao chẳng thấy hồi âm. Quay đi, quay lại toàn thấy "quân xanh" cả. Có lúc mình nghĩ hay là ai đó ghé qua thả vài câu rồi cũng chẳng cần biết kết quả nữa. Nếu vậy thì phí công anh em quá.

Dạ không phải thế đâu sealand vì công việc nên tối mới lần mò lên mạng được, mình lên trên diễn đàn GPE chủ yếu là đọc và hỏi thôi chứ chẳng giúp được ai. Môn excel này mình toàn tự lọ mọ học chứ chưa học qua lớp nào cả nên nó rất lung tung, chẳng có bài bản hệ thống gì. Viết macro thì mình rất thích nhưng chẳng thể nào mà tự học được.
Cảm ơn các anh chị và các bạn đã nhiệt tình giúp đỡ, các bài trả lời mình đang down về chọn lấy 1 bài dễ hiểu nhất để dùng.
Mình thích dùng hàm nhưng kiến thức về hàm excel cũng chỉ biết sơ sơ mấy cái hay dùng thôi. Trong này có nhiều hàm kết hợp với nhau cũng thực sự quá khó hiểu đối với mình rồi nên ngâm cứu hỏi dần.
VD hàm SUMPRODUCT, max , index mà ba tê làm mình chưa bao giờ dùng cả, mình vừa in được cái thread của anh Duyệt về hàm SUMPRODUCT có điều kiện và ngâm cứu chắc vài ngày may ra mới thủng.
Một lần nữa cảm ơn các anh chị và các bạn chứ không phải ném đá đâu. Bạn SEALAND đã có lần còn trả lời thư riêng cho mình giải thích mấy cái hàm khó hiểu cách đây hơn 1 năm minhd vẫn nhớ đó
 
Muốn dùng hàm thì tạm thêm 2 cột phụ để tính, chưa nghĩ ra cách khác.

Nhờ 3T giải thích giùm công thức trong cột tổng lượng là điều kiện mã và đơn giá giống nhau
=IF(A24="","",SUMPRODUCT(($B$2:$B$17=B24)*($F$2:$F$17=F24)*$D$2:$D$17))

Mình thêm 1 điều kiện nữa là DVT cũng phải giống thì mới gộp như sau:
=IF(A24="","",SUMPRODUCT(($B$2:$B$17=B24)*($F$2:$F$17=F24)*($E$2:$E$17=E24)*$D$2:$D$17))
Sao nó lại chạy sai nhỉ

Cột thành tiền
=IF(A24="","",SUMPRODUCT(($B$2:$B$17=B24)*($F$2:$F$17=F24)*$G$2:$G$17))
Nếu lấy luôn đơn giá * số lượng có lợi gì hơn không?
 
@ concocgia
Cái công thức của bạn thì mình có thể hiểu được 1 tí và rất ngắn gọn nhưng xem cái name
=IF(MATCH(Sheet1!$B$2:$B$17&Sheet1!$F$2:$F$17,Sheet1!$B$2:$B$17&Sheet1!$F$2:$F$17,0)=ROW(Sheet1!$B$2:$B$17)-1,ROW(Sheet1!$B$2:$B$17)-1,"")
thì không hiểu gì cả nên dùng giải pháp của 3T vậy còn lại ngâm cứu dần thắc mắc sau vậy
@sealand; chanhTQ; Dat_butmuc
Khổ quá lần mò tự học như mình thế này thì chịu hoàn toàn mấy cái code, pivot... rồi, chẳng biết làm thế nào, cho cái đoạn code hay pivot đó vào đâu chứ nói gì đến hiểu. Muốn viết nhưng code, macro đó có phải là phải học VBA không vậy
 
Chào và cảm ơn anh 3T nhiều
Dựa trên công thức anh làm giúp tôi sửa thành ý của mình và đơn giản bớt công thức 1 chút, kết quả thì thấy giống nhau nhờ anh kiểm tra giúp và giải thích giúp các vấn đề sau nhé:

Chuyển 2 cột anh htêm vào lên đầu tiên

1. Thành tiền =IF(C24="","",SUMPRODUCT(($D$2:$D$17=D24)*($H$2:$H$17=H24)*$I$2:$I$17)) thay bằng F24*H24 có ảnh hưởng gì không

2. Đơn giá =IF(C24="","",INDEX($H$2:$H$17,MATCH(C24,$B$2:$B$17,0))) thay bằng =IF(C24="","",VLOOKUP(C24,$B$2:$F$17,7,0)) có ảnh hưởng gì không
3. DVT =IF(C24="","",VLOOKUP(D24,$D$2:$G$17,4,0)) thay bằng =IF(C24="","",VLOOKUP(C24,$B$2:$F$17,4,0)) có ảnh hưởng gì không

4. Mã =IF(C24="","",INDEX($D$2:$D$17,MATCH(C24,$B$2:$B$17,0))) cũng thay bằng Vlookup .C24.. giống như trường hợp 2,3 có khác biệt gì không?
 

File đính kèm

  • Copy of Book2.xls
    26 KB · Đọc: 20
Chào và cảm ơn anh 3T nhiều
Dựa trên công thức anh làm giúp tôi sửa thành ý của mình và đơn giản bớt công thức 1 chút, kết quả thì thấy giống nhau nhờ anh kiểm tra giúp và giải thích giúp các vấn đề sau nhé:

Chuyển 2 cột anh htêm vào lên đầu tiên

1. Thành tiền =IF(C24="","",SUMPRODUCT(($D$2:$D$17=D24)*($H$2:$H$17=H24)*$I$2:$I$17)) thay bằng F24*H24 có ảnh hưởng gì không

2. Đơn giá =IF(C24="","",INDEX($H$2:$H$17,MATCH(C24,$B$2:$B$17,0))) thay bằng =IF(C24="","",VLOOKUP(C24,$B$2:$F$17,7,0)) có ảnh hưởng gì không
3. DVT =IF(C24="","",VLOOKUP(D24,$D$2:$G$17,4,0)) thay bằng =IF(C24="","",VLOOKUP(C24,$B$2:$F$17,4,0)) có ảnh hưởng gì không

4. Mã =IF(C24="","",INDEX($D$2:$D$17,MATCH(C24,$B$2:$B$17,0))) cũng thay bằng Vlookup .C24.. giống như trường hợp 2,3 có khác biệt gì không?
Nếu Bạn chọn cách thêm 2 cột phụ thì bài sau chắc ổn nhất.
 

File đính kèm

  • Book3.rar
    4.5 KB · Đọc: 31
Web KT
Back
Top Bottom