Tổng hợp vật tư và tự động sắp xếp theo thứ tự A, B, C

HTTP14

Thành viên mới
Tham gia ngày
30 Tháng năm 2017
Bài viết
34
Được thích
5
Điểm
165
Tuổi
31
Thân gửi các anh, chị em GPE
Mình theo dõi điễn đàn đã lâu. Thấy trên GPE có rất nhiều kiến thức bổ ích cho công việc. Nay mình có nội dung này mong mọi người giúp đỡ.
Mình có mã vật tư: Tên + thông số + đơn vị (sheet " CHi tiet")
Mình muốn tổng hợp các mã vật tư giống nhau lại và tự động sắp xếp theo thứ tự A, B, C của cột "tên" và cột "thông số". Ưu tiên cột tên trước xong đến cột thông số. Cảm ơn.
 

File đính kèm

vanthinh3101

Thành viên tích cực
Tham gia ngày
24 Tháng một 2015
Bài viết
862
Được thích
955
Điểm
360
Tuổi
31
Nơi ở
Hà Nội
Thân gửi các anh, chị em GPE
Mình theo dõi điễn đàn đã lâu. Thấy trên GPE có rất nhiều kiến thức bổ ích cho công việc. Nay mình có nội dung này mong mọi người giúp đỡ.
Mình có mã vật tư: Tên + thông số + đơn vị (sheet " CHi tiet")
Mình muốn tổng hợp các mã vật tư giống nhau lại và tự động sắp xếp theo thứ tự A, B, C của cột "tên" và cột "thông số". Ưu tiên cột tên trước xong đến cột thông số. Cảm ơn.
Bạn chọn cả Bảng dữ liệu, chọn Data/Sort và làm theo hình nhé!
 

File đính kèm

HTTP14

Thành viên mới
Tham gia ngày
30 Tháng năm 2017
Bài viết
34
Được thích
5
Điểm
165
Tuổi
31
Nếu muốn dùng công thức thì xem file nhé
Cảm ơn bạn nhiều. Nhưng mã vật tư của mình bao gồm cả đơn vị tính nữa. Cái ví dụ này thì có thể giống nhau nhưng mình muốn áp dụng chung. bạn sửa giúp mình được không. Hoặc bạn sửa giúp mình file tổng hợp theo cách của mình, mình đã tổng hợp nhưng không biết sắp xếp thứ tự tự động A, B, C . Cảm ơn bạn
 

File đính kèm

PacificPR

Thành viên tích cực
Tham gia ngày
12 Tháng tư 2017
Bài viết
1,252
Được thích
1,919
Điểm
360
Nơi ở
Cái Bang
Cho Em tham gia đoạn 1 Code cho thêm phong phú
Mã:
Public Sub TongHop()
    Dim sArr, dArr, I As Long, K As Long
    Dim Dic As Object, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("Chi tiet")
    sArr = .Range(.Range("B2"), .Range("E65536").End(xlUp)).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 5)
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 1) & sArr(I, 2)
    If Not Dic.Exists(Tem) Then
        K = K + 1
        Dic.Add Tem, K
        dArr(K, 1) = K
        dArr(K, 2) = sArr(I, 1): dArr(K, 3) = sArr(I, 2)
        dArr(K, 4) = sArr(I, 3): dArr(K, 5) = sArr(I, 4)
    Else
        dArr(Dic.Item(Tem), 5) = dArr(Dic.Item(Tem), 5) + sArr(I, 4)
    End If
Next I
With Sheets("Tong hop")
    .Range("A2:E" & .Range("B65535").End(3).Row + 1).Borders.LineStyle = xlNone
    .Range("A2:E" & .Range("B65535").End(3).Row + 1).ClearContents
    .Range("A2").Resize(K, 5) = dArr
    .Range("B2:E" & .Range("B65535").End(3).Row).Sort Key1:=.[B1]
    .Range("A2:E" & .Range("B65535").End(3).Row).Borders.LineStyle = xlContinuous
End With
Set Dic = Nothing
End Sub
 

eke_rula

Thành viên tích cực
Tham gia ngày
12 Tháng mười một 2016
Bài viết
1,079
Được thích
1,235
Điểm
360
Tuổi
23
Cảm ơn bạn nhiều. Nhưng mã vật tư của mình bao gồm cả đơn vị tính nữa. Cái ví dụ này thì có thể giống nhau nhưng mình muốn áp dụng chung. bạn sửa giúp mình được không. Hoặc bạn sửa giúp mình file tổng hợp theo cách của mình, mình đã tổng hợp nhưng không biết sắp xếp thứ tự tự động A, B, C . Cảm ơn bạn
Góp thêm 1 cách dùng CT, bạn nhận file:
Ps/: Muốn sắp thì từ nhỏ đến lớn thì sửa MIN thành MAX trong công thức, nhớ bấm Ctrl+Shift+Enter!!!
Sao không làm pivot cho đơn giản nhỉ!!!
 

File đính kèm

Ba Tê

Cạo Rồi Khỏi Gội
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,114
Được thích
15,726
Điểm
1,860
Tuổi
60
Nơi ở
An Giang
Cho Em tham gia đoạn 1 Code cho thêm phong phú
Mã:
Public Sub TongHop()
    Dim sArr, dArr, I As Long, K As Long
    Dim Dic As Object, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("Chi tiet")
    sArr = .Range(.Range("B2"), .Range("E65536").End(xlUp)).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 5)
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 1) & sArr(I, 2)
    If Not Dic.Exists(Tem) Then
        K = K + 1
        Dic.Add Tem, K
        dArr(K, 1) = K
        dArr(K, 2) = sArr(I, 1): dArr(K, 3) = sArr(I, 2)
        dArr(K, 4) = sArr(I, 3): dArr(K, 5) = sArr(I, 4)
    Else
        dArr(Dic.Item(Tem), 5) = dArr(Dic.Item(Tem), 5) + sArr(I, 4)
    End If
Next I
With Sheets("Tong hop")
    .Range("A2:E" & .Range("B65535").End(3).Row + 1).Borders.LineStyle = xlNone
    .Range("A2:E" & .Range("B65535").End(3).Row + 1).ClearContents
    .Range("A2").Resize(K, 5) = dArr
    .Range("B2:E" & .Range("B65535").End(3).Row).Sort Key1:=.[B1]
    .Range("A2:E" & .Range("B65535").End(3).Row).Borders.LineStyle = xlContinuous
End With
Set Dic = Nothing
End Sub
Còn xét thiếu "DVT" như yêu cầu bài #4.
 

HTTP14

Thành viên mới
Tham gia ngày
30 Tháng năm 2017
Bài viết
34
Được thích
5
Điểm
165
Tuổi
31
Góp thêm 1 cách dùng CT, bạn nhận file:
Ps/: Muốn sắp thì từ nhỏ đến lớn thì sửa MIN thành MAX trong công thức, nhớ bấm Ctrl+Shift+Enter!!!
Sao không làm pivot cho đơn giản nhỉ!!!
Cảm ơn bạn. Nhưng cột đơn vị tính cùng 1 tên nhưng có thể đơn vị tính khác nhau: Ví dụ: Bình nước: Bộ/ Cái. Nên dùng Hàm Vlookup sợ sẽ có trường hợp bị nhầm
 

dazkangel

<New Horizons>
Tham gia ngày
28 Tháng hai 2017
Bài viết
2,613
Được thích
3,113
Điểm
360
Nơi ở
Đồng Nai
Góp thêm 1 cách dùng CT, bạn nhận file:
Ps/: Muốn sắp thì từ nhỏ đến lớn thì sửa MIN thành MAX trong công thức, nhớ bấm Ctrl+Shift+Enter!!!
Sao không làm pivot cho đơn giản nhỉ!!!
Chơi mmult luôn khà khà, đúng là mỗi người 1 sở trường :D
 

eke_rula

Thành viên tích cực
Tham gia ngày
12 Tháng mười một 2016
Bài viết
1,079
Được thích
1,235
Điểm
360
Tuổi
23
Cảm ơn bạn. Nhưng cột đơn vị tính cùng 1 tên nhưng có thể đơn vị tính khác nhau: Ví dụ: Bình nước: Bộ/ Cái. Nên dùng Hàm Vlookup sợ sẽ có trường hợp bị nhầm
Bạn dùng Lookup thêm cái điều kiện đơn vị tính vào là được: =LOOKUP(2,1/($B$2:$B$8=H2)/($C$2:$C$8=I2),$D$2:$D$8)
 

eke_rula

Thành viên tích cực
Tham gia ngày
12 Tháng mười một 2016
Bài viết
1,079
Được thích
1,235
Điểm
360
Tuổi
23
Chơi mmult luôn khà khà, đúng là mỗi người 1 sở trường :D
Bài này dùng 1 công thức bí quá nên mới phải sài đến MMULT, chứ không nghĩ ra cách khác mà dùng 1 CT để ra được.
Lỡ đổi đề bài sắp xếp theo 3 cột , mà 3 cột đều là dạng số không thì không biết sao ta, để hồi đăng bài hỏi thử các anh/chị GPE :D:D:D!!!
 

dazkangel

<New Horizons>
Tham gia ngày
28 Tháng hai 2017
Bài viết
2,613
Được thích
3,113
Điểm
360
Nơi ở
Đồng Nai
Bài này dùng 1 công thức bí quá nên mới phải sài đến MMULT, chứ không nghĩ ra cách khác mà dùng 1 CT để ra được.
Lỡ đổi đề bài sắp xếp theo 3 cột , mà 3 cột đều là dạng số không thì không biết sao ta, để hồi đăng bài hỏi thử các anh/chị GPE :D:D:D!!!
Dùng cột phụ nhét offset cho nhẹ, offset lấy luôn thông số và đơn vị khà khà :D
 

eke_rula

Thành viên tích cực
Tham gia ngày
12 Tháng mười một 2016
Bài viết
1,079
Được thích
1,235
Điểm
360
Tuổi
23
đến đây chưa mò được cách sắp xếp từ A-Z
Gợi ý cho bạn tý, nếu bạn dùng cột phụ thì hãy xếp hạng theo 3 cột tên, thông số đơn vị, có được cột đấy thì sẽ dễ hơn, ở đây là chuỗi nên xếp hạng dễ hơn số, không cần dùng cột phụ để nối 3 cột đấy!!!
 

eke_rula

Thành viên tích cực
Tham gia ngày
12 Tháng mười một 2016
Bài viết
1,079
Được thích
1,235
Điểm
360
Tuổi
23

dazkangel

<New Horizons>
Tham gia ngày
28 Tháng hai 2017
Bài viết
2,613
Được thích
3,113
Điểm
360
Nơi ở
Đồng Nai
Gợi ý cho bạn tý, nếu bạn dùng cột phụ thì hãy xếp hạng theo 3 cột tên, thông số đơn vị, có được cột đấy thì sẽ dễ hơn, ở đây là chuỗi nên xếp hạng dễ hơn số, không cần dùng cột phụ để nối 3 cột đấy!!!
Bác xem chỉ mình cách nào đơn giản hơn chứ gà mờ nên phải dùng cột phụ ạ khà khà.
 

File đính kèm

Top Bottom