Tự động điền mã hàng mới xuất hiện

Liên hệ QC

tranhuuphuoc

Thành viên mới
Tham gia
24/4/09
Bài viết
8
Được thích
1
GPE giúp tôi với bài tập này với yêu cầu tôi đã gửi theo File đính kèm. (Xin nói thêm tôi mù tịt về lập trình nếu có thể mọi người làm giúp tôi bằng công thức Excel.
Xin cám ơn trước!

 

File đính kèm

GPE giúp tôi với bài tập này với yêu cầu tôi đã gửi theo File đính kèm. (Xin nói thêm tôi mù tịt về lập trình nếu có thể mọi người làm giúp tôi bằng công thức Excel.
Xin cám ơn trước!

Xem trong file nhé. Dạng này có nhiều rồi.
 

File đính kèm

GPE giúp tôi với bài tập này với yêu cầu tôi đã gửi theo File đính kèm. (Xin nói thêm tôi mù tịt về lập trình nếu có thể mọi người làm giúp tôi bằng công thức Excel.
Xin cám ơn trước!

Tạo thêm cột phụ cho đơn giản.
Name:"GPE" của anh thắng hay thiệt!
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn nên tham khảo thêm về công cụ có sẵn là Pivot Table và Consolidate nhé, nó khỏi cần dùng công thức nào hết, cũng tự động update dữ liệu.
 
Các bác làm hay lắm nhưng cho em hỏi
Tự động thêm mã hàng, xong có thể sắp xếp theo một điều kiện nào đó không?
Ví dụ sắp xếp từ nhỏ đến lớn chẳng hạn.
Mong các bác chỉ dùm.
 
Các bác làm hay lắm nhưng cho em hỏi
Tự động thêm mã hàng, xong có thể sắp xếp theo một điều kiện nào đó không?
Ví dụ sắp xếp từ nhỏ đến lớn chẳng hạn.
Mong các bác chỉ dùm.
Cái gì cũng làm được tuốt... Có điều vừa trích lọc lại vừa sắp xếp mà dùng công thức thì hơi oải
Nếu tôi làm thì tôi dùng:
- Consolidate để tổng hợp
- Chức năng Sort để sắp xếp
Viết code VBA dựa trên hoạt động của 2 công cụ này là xong... Nhẹ cả người.. khỏi công thức, file nhẹ re
Ngoài ra cũng có thể tham khảo Pivot Table, chính là 1 công cụ tổng hợp toàn diện nhất
 
Các bác ơi với công thức trên em giải quyết được công việc rồi tuy nhiên cực chậm luôn (máy em chạy tương đối nhanh) vì file cel của em tầm 50.000 dòng cơ. Không biết có công thức nào hay hơn ko các bác giúp em với. Mà consolidate tự động update như thế nào nhỉ. Mong các bác chỉ giáo.
Cám ơn các bác trước!
 
Các bác ơi với công thức trên em giải quyết được công việc rồi tuy nhiên cực chậm luôn (máy em chạy tương đối nhanh) vì file cel của em tầm 50.000 dòng cơ. Không biết có công thức nào hay hơn ko các bác giúp em với. Mà consolidate tự động update như thế nào nhỉ. Mong các bác chỉ giáo.
Cám ơn các bác trước!
Nếu bạn muốn dùng code thì phải đưa dữ liệu thật lên. Vài dòng thôi cũng được nhưng phải có đủ các cột. Trách trường hợp nhờ sửa đi sửa lại do các bạn không biết sửa code cho phù hợp với dữ liệu thật.
 
Em xin lỗi mọi người em ko đọc kỹ lên dung lượng vừa rồi gần 1 GB nên ko upload được, em phải cắt bớt đi, mọi người thông cảm nhé

Bạn Nguyễn Hữu Thắng à mình ko muốn dùng code mà chỉ muốn dùng công thức hoặc là consolidate mà tự update thôi (chứ thực sự mình ko biết một tí gì về code nên khi ứng dụng rất khó). Mong mọi người giúp đỡ.
Cám ơn!
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Bạn Nguyễn Hữu Thắng à mình ko muốn dùng code mà chỉ muốn dùng công thức hoặc là consolidate mà tự update thôi (chứ thực sự mình ko biết một tí gì về code nên khi ứng dụng rất khó). Mong mọi người giúp đỡ.
Cám ơn!
Dử liệu nhiều như thế mà bạn đòi dùng công thức, nó không "nặng" mới lạ đấy
Chỉ có 1 cách: Dùng Consolidate... và để thuận tiện cho việc thao tác, ta có thể viết code cho nó ---> Việc của bạn chỉ là: Cứ nhập liệu bình thường, đến khi cần thì NHẤN NÚT là kết quả tự ra!
PHP:
Sub TongHop()
  Range("D:E").ClearContents
  Range("D1:E1") = Range("A1:B1").Value
  With Range("A1").CurrentRegion
    Range("D1").Consolidate .Address(, , 2), 9, 1, 1
  End With
End Sub
Mở file đính kèm, bấm nút TỔNG HỢP và xem kết quả nhé
Lưu ý 1 chuyện quan trọng: Phải Enable macro khi mở file thì code mới chạy được đấy nhé
 

File đính kèm

Nhờ các thày tư vấn giùm có thể rút gọn công thức đi được không

Kiến thức về mảng Excel của tôi vẫn còn rất hạn chế, hôm nay tìm những bài trên diễn đàn ôn lại kiến thức học được từ các thày, không biết công thức có thể rút gọn nữa không?

PHP:
DS =OFFSET(Sheet1!$A$3,,,MATCH(REPT("z",255),Sheet1!$A$2:$A$1000))
PHP:
tim=IF(MATCH(DS,DS,0)=ROW(INDIRECT("1:"&ROWS(DS))),ROW(INDIRECT("1:"&ROWS(DS))),"")
PHP:
DK = =IF(ISNA(tim),"",tim)

Công thức tại ô E3:
PHP:
=IF(ROWS($1:1)>COUNT(DK),"",INDEX(DS,SMALL(DK,ROWS($1:1))))

Công thức tại ô F3 là
PHP:
=IF(E3="","",SUMIF($A$3:$A$1000,E3,$B$3:$B$1000))


Nhờ mọi người trên diễn đàn góp ý
 

File đính kèm

Hic..lâu không ôn lại Dic, em viết xong chạy nhưng không biết nó nhầm ở đâu tìm mãi không ra

PHP:
Sub Thunghiem()
    Dim Rng(), Arr(), i As Long, j As Long
    Rng = Range([A3], [B65536].End(xlUp)).Value
    Set Dic = CreateObject("Scripting.Dictionary")
    ReDim Arr(1 To UBound(Rng, 1), 1 To 2)
    For i = 1 To UBound(Rng, 1)
        If Rng(i, 1) <> "" Then
            If Not Dic.Exists(Rng(i, 1)) Then
                j = j + 1
                tmp = CStr(Rng(i, 1))
                Dic.Add tmp, j
                Arr(j, 1) = Rng(i, 1)
                Arr(Dic.Item(tmp), 2) = Rng(i, 2)
            Else
            Arr(Dic.Item(tmp), 2) = Arr(Dic.Item(tmp), 2) + Rng(i, 2)
            End If
        End If
    Next
    If j Then Sheet1.[E3].Resize(j, 2).Value = Arr
    End Sub

Kính nhờ các thày chỉ dùm em
 

File đính kèm

Hic..lâu không ôn lại Dic, em viết xong chạy nhưng không biết nó nhầm ở đâu tìm mãi không ra

PHP:
Sub Thunghiem()
    Dim Rng(), Arr(), i As Long, j As Long
    Rng = Range([A3], [B65536].End(xlUp)).Value
    Set Dic = CreateObject("Scripting.Dictionary")
    ReDim Arr(1 To UBound(Rng, 1), 1 To 2)
    For i = 1 To UBound(Rng, 1)
        If Rng(i, 1) <> "" Then
            If Not Dic.Exists(Rng(i, 1)) Then
                j = j + 1
                tmp = CStr(Rng(i, 1))
                Dic.Add tmp, j
                Arr(j, 1) = Rng(i, 1)
                Arr(Dic.Item(tmp), 2) = Rng(i, 2)
            Else
            Arr(Dic.Item(tmp), 2) = Arr(Dic.Item(tmp), 2) + Rng(i, 2)
            End If
        End If
    Next
    If j Then Sheet1.[E3].Resize(j, 2).Value = Arr
    End Sub

Kính nhờ các thày chỉ dùm em
Code này sai 2 chỗ:
1- Arr(Dic.Item(tmp), 2) = Rng(i, 2) phải là Arr(j,2)=Rng(i,2)
2- Khi tìm thấy Rng(i,1) đã tồn tại trong Dic, vòng lặp nhảy xuống Else, thi hành lệnh Arr(Dic.Item(tmp), 2) = Arr(Dic.Item(tmp), 2) + Rng(i, 2) để cộng dồn
Cái lệnh này nó cộng dồn số lượng......trật lấc, bạn thử tìm xem tại sao nó cộng .....hổng trúng
Thân
+-+-+-+Híc+-+-+-+
 
Em tìm được chỗ sai rồi thày ah, em sửa thế này cho ra kết quả đúng

PHP:
Sub Thunghiem()
    Dim Rng(), Arr(), i As Long, j As Long
    Rng = Range([A3], [B65536].End(xlUp)).Value
    Set Dic = CreateObject("Scripting.Dictionary")
    ReDim Arr(1 To UBound(Rng, 1), 1 To 2)
    For i = 1 To UBound(Rng, 1)
        If Rng(i, 1) <> "" Then
            If Not Dic.Exists(Rng(i, 1)) Then
                j = j + 1
                tmp = CStr(Rng(i, 1))
                Dic.Add tmp, j
                Arr(j, 1) = Rng(i, 1)
                Arr(j, 2) = Rng(i, 2)
            Else
            tmp = CStr(Rng(i, 1))
            Arr(Dic.Item(tmp), 2) = Arr(Dic.Item(tmp), 2) + Rng(i, 2)
            End If
        End If
    Next
    If j Then Sheet1.[E3].Resize(j, 2).Value = Arr
    End Sub

Nhưng không hiểu sao vẫn có cảm giác chưa gọn lắm, nhờ các thày chỉ cho.
 
Web KT

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

Back
Top Bottom