Các câu hỏi về lọc ra danh sách duy nhất (loại bỏ dữ liệu trùng) (5 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Thêm 1 cách khác, bạn xem File, nhớ Enable Macro --> Chọn vùng dữ liệu (không chọn dòng tiêu đề) --> Nhấn nút.

PHP:
Sub UniqueFilter()
    Dim Cll As Range, i As Long, Ar()
    With CreateObject("Scripting.Dictionary")
        For Each Cll In Selection
            If .Exists(Cll.Value) = False And Cll <> "" _
            Then .Add Cll.Value, 1
        Next Cll
        Ar = .Keys
        For i = 0 To .Count - 1
            [F:F].Cells(i + 2) = Ar(i)
        Next i
    End With
    Range("F2", [F65000].End(xlUp)).Sort [F1], xlAscending
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Cái Function của bạn nhìn nó... kỳ kỳ thế nào ấy
Nếu vùng dử liệu là 1 cột, đương nhiên ta sẽ dùng Advanced Filter... bằng ngược lại, vùng dử liệu nằm lộn xộn, vừa dòng vừa cột thì nên dùng Dictionary Object
Đại khái thế này:
PHP:
Function UniqueList(Rng As Range)
  Dim Clls As Range
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each Clls In Rng
      .Add Clls.Value, ""
    Next
    UniqueList = .Keys
  End With
End Function
Ở trên là UDF để lấy danh sách duy nhất, tiếp theo ta sẽ tạo 1 sub làm công việc theo yêu câu:
PHP:
Sub GetUnique()
  Dim Src As Range, Des As Range
  Set Src = Application.InputBox("Chon vung du lieu", Type:=8)
  Set Des = Application.InputBox("Chon 1 cell de xuat du lieu", Type:=8)
  With Des.Resize(UBound(UniqueList(Src)) + 1)
    .Value = WorksheetFunction.Transpose(UniqueList(Src))
    .Sort .Cells(1, 1), 1, Header:=xlNo
  End With
End Sub
----------------------
Thêm 1 cách khác, bạn xem File, nhớ Enable Macro --> Chọn vùng dữ liệu (không chọn dòng tiêu đề) --> Nhấn nút.

PHP:
Sub UniqueFilter()
    Dim Cll As Range, i As Long, Ar()
    With CreateObject("Scripting.Dictionary")
        For Each Cll In Selection
            If .Exists(Cll.Value) = False And Cll <> "" _
            Then .Add Cll.Value, 1
        Next Cll
        Ar = .Keys
        For i = 0 To .Count - 1
            [F:F].Cells(i + 2) = Ar(i)
        Next i
    End With
    Range("F2", [F65000].End(xlUp)).Sort [F1], xlAscending
End Sub
Bạn dùng Dictionary Object là đúng rồi.. có điều, đã ra được đến .Keys thì tại sao lại phải For tiếp nữa nhỉ? ---> 2 vòng lập à?
Chổ này:
PHP:
Ar = .Keys
 For i = 0 To .Count - 1
   [F:F].Cells(i + 2) = Ar(i)
 Next i
Nên là
PHP:
Range("...gì gì đó...").Resize(....).Value = WorksheetFunction.Transpose(.Keys)
Hoặc code của bạn có thể sửa theo 1 hướng khác:
PHP:
Sub UniqueFilter()
  Dim Cll As Range, i As Long, Ar()
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each Cll In Selection
      If Not .Exists(Cll.Value) And Cll <> "" Then
        .Add Cll.Value, ""
        [F65000].End(xlUp)(2) = Cll.Value
      End If
    Next Cll
  End With
  Range("F2", [F65000].End(xlUp)).Sort [F1], xlAscending
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Sắp xếp chữ

Chào tất cả mọi người.
Tôi có vấn đề về việc sắp xếp ký tự như sau mà không biết làm thế nào.
Rất mong được mọi người giúp.
Trên một ô Excel có các ký tự A,B,C,D...nhưng bị xuống dòng bởi tổ hợp phím "Alt+Enter".
Tôi muốn sắp xếp lại thành một dòng như sau:
(có rất nhiều cell tương tự thế này)
Trướ Sau
A,B,C,D
E,F,G,H
K,L,M
A,B,C,D,E,F,G,H,K,L,M
Cảm ơn mọi người !
 

File đính kèm

Chào tất cả mọi người.
Tôi có vấn đề về việc sắp xếp ký tự như sau mà không biết làm thế nào.
Rất mong được mọi người giúp.
Trên một ô Excel có các ký tự A,B,C,D...nhưng bị xuống dòng bởi tổ hợp phím "Alt+Enter".
Tôi muốn sắp xếp lại thành một dòng như sau:
(có rất nhiều cell tương tự thế này)
Trướ Sau
A,B,C,D
E,F,G,H
K,L,M
A,B,C,D,E,F,G,H,K,L,M
Cảm ơn mọi người !
Tại cell B4 bạn gõ công thức này vào nhé:
PHP:
=SUBSTITUTE(A4,CHAR(10),",")
 
So sánh 1 số với dãy số

Rất mong các anh em trên GPE xem và hướng dẫn giúp trong điều kiện so sánh 1 số với dãy số trong trường hợp sau ( Được nêu cụ thể trong File đính kèm)
Xin được cám ơn trước.
Đính kèm File.
 

File đính kèm

Rất mong các anh em trên GPE xem và hướng dẫn giúp trong điều kiện so sánh 1 số với dãy số trong trường hợp sau ( Được nêu cụ thể trong File đính kèm)
Xin được cám ơn trước.
Đính kèm File.
Em nhìn kết quả và đoán thế này:
- Cell B6 có công thức:
PHP:
=IF(B5-G5+C5<=0,"",B5-G5+C5)
- Cell C6 có công thức:
PHP:
=IF(D5+MIN(B5-G5+C5,0)>0,D5+MIN(B5-G5+C5,0),"")
Các cell phía dưới tương tự (copy dòng 6 paste xuống)
 
Em nhìn kết quả và đoán thế này:
- Cell B6 có công thức:
PHP:
=IF(B5-G5+C5<=0,"",B5-G5+C5)
- Cell C6 có công thức:
PHP:
=IF(D5+MIN(B5-G5+C5,0)>0,D5+MIN(B5-G5+C5,0),"")
Các cell phía dưới tương tự (copy dòng 6 paste xuống)
---
Không phải như thế chú ơi. !$@!!
Anh minh họa B6 màu xanh: là kết quả tại B5 trước và sau khi xử lý.
B6, B7, B8.....: là các dòng tiếp tục phải xử lý theo các điều kiện được nêu theo B5.

Lý do: cần xử lý để chuyển số dư cuối kỳ theo từng mục lên thành đầu kỳ.

Cám ơn chú. Mong
---

Để cho rõ ràng hơn mong chú xem file đính kèm đã sắp xếp lại cho rõ
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi không rõ việc chuyển số dư thế nào, nhưng theo mô tả tại ô K5 (từ file mới nhất):
x1=7 Nếu G5<B5
thì nhận kết quả B5=18(10-7+15), C5=20

Xin chỉ rõ: x1 = 7 là kết quả cần tìm có phải không? Nếu vậy thì có phải sửa B5 thành 18(10 - 7 + 15) tức là 18 bình phương (hay chỉ 18), và C5 được sửa thành 20
Hay x1 = 7 là đã có (tức là ô G5 đã có) thì sửa lại B5.
Nói chung tôi cảm thấy cần mô tả rõ hơn. nếu không, tính toán sẽ bị luẩn quẩn (lấy G5 so sánh với B5 để sửa B5).
 
Lần chỉnh sửa cuối:
Tôi không rõ việc chuyển số dư thế nào, nhưng theo mô tả tại ô K5 (từ file mới nhất):
x1=7 Nếu G5<B5
thì nhận kết quả B5=18(10-7+15), C5=20

Xin chỉ rõ: x1 = 7 là kết quả cần tìm có phải không? Nếu vậy thì có phải sửa B5 thành 18(10 - 7 + 15) tức là 18 bình phương (hay chỉ 18), và C5 được sửa thành 20
Hay x1 = 7 là đã có (tức là ô G5 đã có) thì sửa lại B5.
Nói chung tôi cảm thấy cần mô tả rõ hơn. nếu không, tính toán sẽ bị luẩn quẩn (lấy G5 so sánh với B5 để sửa B5).
---

Cám ơn bạn, tôi xin nói cho rõ:
Với G5= x1 => x1=7, x1=10....là nêu các trường hợp x1 xảy ra .
G5: số chi trã, khi có phát sinh được tính lần lượt đã chi trả cho kỳ xa nhất ( kỳ 1), tiếp tục đến kỳ 2, kỳ 3.
Thân chào.
---
To: ThanhPhuong: cám ơn sự nhiệt tình của bạn ( bài #12 )
 
Lần chỉnh sửa cuối:
Đây là code so sánh, chép vào Sheet cần thực hiện việc so sánh

PHP:
Sub SoSanh()
    n = InputBox("Du lieu bat dau tu dong thu", "So Sanh", 5)
    m = InputBox("Du lieu ket thuc tu dong thu", "So Sanh", 15)
    For i = n To m
        DK1 = Range("B" & i).Value
        DK2 = Range("G" & i).Value
        GT2 = Range("C" & i).Value
        GT3 = Range("D" & i).Value
        If DK1 > DK2 Then
            Range("H" & i) = DK1 - DK2 + GT2 'Bi-Gi+Ci
            Range("I" & i) = GT3 'Di
        ElseIf DK1 = DK2 Then
            Range("H" & i) = GT2 'Ci
            Range("I" & i) = GT3 'Di
        ElseIf DK1 < DK2 And DK2 < DK1 + GT2 Then
            Range("H" & i) = DK1 - DK2 + GT2 'Bi-Gi+Ci
            Range("I" & i) = GT3 'Di
        ElseIf DK2 > DK1 And DK2 = DK1 + GT2 Then
            Range("I" & i) = GT3 'Di
        ElseIf DK2 > DK1 And DK2 > DK1 + GT2 Then
            Range("I" & i) = DK1 + GT2 - DK2 + GT3 'Bi+Ci-Gi+Di
        ElseIf DK2 > GT1 + GT2 + GT3 Then
            '
        End If
    Next
End Sub


Do không hiểu hết vấn đề của bài toán nên còn bỏ ngỏ cái so sánh cuối cùng, bạn xem và ghi thêm nhé
Thân mến
 
Giúp lọc danh sách.

HI các bạn.

Mình muốn là khi phần chi tiết đánh thêm một mã hàng mới thì phần tổng hợp sẽ tự động add thêm vào. (Ô B17)
Tks.
 

File đính kèm

HI các bạn.

Mình muốn là khi phần chi tiết đánh thêm một mã hàng mới thì phần tổng hợp sẽ tự động add thêm vào. (Ô B17)
Tks.
Thử tạo 1 macro, khi nhập thêm tên hàng vào cột B thì kiểm tra xem bên Tổng Hợp đã có chưa = hàm countif. Nếu Countif=0 thì cộng thêm vào.
 
Ặc...!

Em chẳng biết gì về macro cả...!...Liệu dùng hàm có được không nhỉ...

Vì nếu chuyển sang máy người khác lại ko có macro thì trông chẳng ra sao..Thunghi nhỉ!!!!
 
Ặc...!

Em chẳng biết gì về macro cả...!...Liệu dùng hàm có được không nhỉ...

Vì nếu chuyển sang máy người khác lại ko có macro thì trông chẳng ra sao..Thunghi nhỉ!!!!
Dữ liệu của bạn có lớn không? Nếu không lớn thì dùng phương pháp trích lọc duy nhất thì không phải dùng đến Macro.
 
Dữ liệu của mình không nhiều lắm. Max 20 sản phẩm thôi.

Bạn có thể hướng dẫn qua file được không..! Tks very mục
 

File đính kèm

File đính kèm

cách tạo dấu côgn thức mà khi ấn phím F3 thì hiển thị như thế nào các bác nhỉ!?

Nếu viết cả ra thì dài quá
 
Web KT

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

Back
Top Bottom