- 帖子
- 45
- 主題
- 10
- 精華
- 0
- 積分
- 59
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2014-2-6
- 最後登錄
- 2019-6-22

|
17#
發表於 2016-10-7 12:15
| 只看該作者
不好意思借標題問一下,
有試著將lpk187大的程式碼略做修改,
因為對VBA真的還是新手程度,所以修改的部份做得很不好,
先簡述目前希望達到的效果:
1.若兩橫列的J欄數值不同,L欄數值相同,
則僅清除其中一橫列的L欄數值,兩橫列均不刪除.
2.跟上述規則類似,
若兩橫列的J欄數值相同,L欄數值不同,
則僅清除其中一橫列的J欄數值,兩橫列均不刪除.
3.若兩橫列的J欄數值及L欄數值均為空白,
則兩橫列均刪除.
修改後程式碼如下:- Public Sub extwo()
- Dim ar()
- Range("c2").Resize(Cells(Rows.Count, 3).End(xlUp).Row, 1).Select
- Selection.Resize(Selection.Rows.Count - 1, 1).Select
- Selection.Copy Range("a2")
- arr = Range("A2:AD" & Cells(Rows.Count, 1).End(xlUp).Row)
- K = UBound(arr)
- For i = 1 To UBound(arr) - 1
- For j = i + 1 To UBound(arr)
- If arr(i, 1) = "" Or arr(j, 1) = "" Then GoTo 10
- If arr(i, 11) & arr(i, 13) = arr(j, 11) & arr(j, 13) Then
- For L = 1 To UBound(arr, 2)
- arr(j, L) = ""
- Next
- K = K - 1
- ElseIf arr(i, 11) = arr(j, 11) And arr(i, 13) <> arr(j, 13) Then
- If arr(i, 13) = "" Then
- arr(i, 11) = ""
- Else
- arr(j, 11) = ""
- End If
- ElseIf arr(i, 11) <> arr(j, 11) And arr(i, 13) = arr(j, 13) Then
- If arr(i, 11) = "" Then
- arr(i, 13) = ""
- Else
- arr(j, 13) = ""
- End If
- ElseIf arr(i, 11) = "" And arr(i, 13) = "" Then
- arr(i, 1) = ""
- ElseIf arr(j, 11) = "" And arr(j, 13) = "" Then
- arr(j, 1) = ""
- '
- End If
-
- 10:
- Next
- Next
- ReDim ar(1 To K, 1 To UBound(arr, 2))
- K = 1
- For i = 1 To UBound(arr)
- If arr(i, 1) <> "" Then
- For L = 1 To UBound(arr, 2)
- ar(K, L) = arr(i, L)
- Next
- K = K + 1
- End If
- Next
- Range("a2:AD" & Cells(Rows.Count, 1).End(xlUp).Row).Clear
- [a2].Resize(UBound(ar), UBound(arr, 2)) = ar
- Columns(1).ClearContents
- [L2].Select
- End Sub
複製代碼 目前的問題在於,
測試少量資料時(比如說10筆以內),
看似沒有問題,
但是若測試大量資料時,
用EXCEL2007的內建的格式化條件設定,
去標出重複的值時,
會發現還是有很多重複資料沒被刪除,
需再跑第二次程式碼,
才會清除,
不知問題出在哪裡,
還望前輩不吝指點,十分感謝. |
|