返回列表 上一主題 發帖

比對兩直欄的數值刪除重複橫列問題

回復 1# greetingsfromtw
試試看 是這樣媽?
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Object, Rng As Range, i As Long, St As String
  4.     Set D = CreateObject("SCRIPTING.DICTIONARY")
  5.     Set Rng = Range("B:P").Rows
  6.     For i = 2 To Rng.Rows.Count
  7.         If Application.CountA(Rng(1).Rows(i)) = 0 Then Exit For
  8.         With Rng.Rows(i)
  9.             St = Trim(.Cells(10)) & Trim(.Cells(12))
  10.            '**第二點就是C欄必須非空白
  11.             If .Cells(2) <> "" And St <> "" Then
  12.                 If D.EXISTS(St) = False Then D(St) = Rng.Rows(i).Value
  13.                 '1.若兩個或多個橫列的欄位K數值相同(或空白),且欄位M數值也相同(或空白),
  14.                 '2.若兩個或多個橫列的欄位K數值相同,但欄位M的數值不同,
  15.             End If
  16.         End With
  17.     Next
  18.     If D.Count > 0 Then
  19.         Rng(1).Offset(, Rng.Columns.Count + 2).Resize(D.Count, Rng.Columns.Count).Value _
  20.                      = Application.Transpose(Application.Transpose(D.ITEMS))
  21.     End If
  22. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 4# greetingsfromtw
這樣對嗎?
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D(1 To 3) As Object, Rng As Range, i As Long, S1 As String, S2 As String, AR
  4.     Set D(1) = CreateObject("SCRIPTING.DICTIONARY")
  5.     Set D(2) = CreateObject("SCRIPTING.DICTIONARY")
  6.     Set D(3) = CreateObject("SCRIPTING.DICTIONARY")
  7.     Set Rng = Range("B:P").Rows
  8.     For i = 2 To Rng.Rows.Count
  9.         If Application.CountA(Rng(1).Rows(i)) = 0 Then Exit For
  10.         With Rng.Rows(i)
  11.             If .Cells(2) <> "" Then '**第二點就是C欄必須非空白
  12.                 S1 = .Cells(10)
  13.                 S2 = .Cells(12)
  14.                 If Not D(1).EXISTS(S1) And Not D(2).EXISTS(S2) Then
  15.                     '**字典物件1的Key沒有 數值1  且  字典物件2的Key沒有 數值2
  16.                         If S1 <> "" And S2 <> "" Then D(3)(S1 & S2) = Rng.Rows(i).Value
  17.                         D(1)(S1) = ""
  18.                         D(2)(S2) = ""
  19.                 ElseIf Not D(1).EXISTS(S1) And D(2).EXISTS(S2) Then
  20.                       '**字典物件1的Key沒有 數值1  且  字典物件2的Key 有 數值2
  21.                      AR = Rng.Rows(i).Value
  22.                      AR(1, 12) = ""                        '**  不要數值2
  23.                      D(3)(S1) = AR
  24.                 ElseIf D(1).EXISTS(S1) And Not D(2).EXISTS(S2) Then
  25.                     '**字典物件1的Key 有 數值1  且  字典物件2的Key 沒有 數值2
  26.                      AR = Rng.Rows(i).Value
  27.                      AR(1, 10) = ""                       '**  不要數值1
  28.                      D(3)(S2) = AR
  29.                 End If
  30.             End If
  31.         End With
  32.     Next
  33.     If D(3).Count > 0 Then
  34.         Rng(1).Offset(2, Rng.Columns.Count + 2).Resize(D(3).Count, Rng.Columns.Count).Value _
  35.                      = Application.Transpose(Application.Transpose(D(3).ITEMS))
  36.     End If
  37. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題