返回列表 上一主題 發帖

回傳有值的儲存格應對第一列的資料

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA找出範圍儲存格中的重複列或空列,學習方案如下,請各位前輩指教
執行前:


執行結果:


Option Explicit
Sub 選取重複或空白列()
Dim Brr, Z, i&, j%, T$, T1$, xU As Range, C%
'↑宣告變數
Set Z = CreateObject("Scripting.Dictionary")
'↑令Z變數是 字典
Brr = Range([CQ1], Cells(ActiveSheet.UsedRange.Rows.Count, "A"))
'↑令Brr變數是帶入指定範圍儲存格值的二維陣列
C = UBound(Brr, 2): T1 = Application.Rept("/", C)
'↑C變數是Brr陣列橫向最大索引欄號,令T1變數是C變數個連續"/"符號的字串
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
   For j = 1 To C: T = T & "/" & Brr(i, j): Next
   '↑設順迴圈!j從1到 C變數,令T變數是以"/"符號連接各迴圈陣列值的新字串
   If Z(T) <> "" Or T = T1 Then
   '↑如果以T變數查Z字典回傳item不是空的 或T變數同 T1變數?
      If xU Is Nothing Then
      '↑如果xU變數是空的?
         Set xU = Cells(i, 1)
         '↑令xU變數是 i迴圈列A欄儲存格
         Else
         Set xU = Union(xU, Cells(i, 1))
         '↑否則就令 i迴圈列A欄儲存格納入 xU變數中
      End If
   End If
   Z(T) = 1: T = ""
   '↑令Z字典中 key為T變數的 item值是1,令T變數清空
Next
If xU Is Nothing Then MsgBox "沒有重複列": Exit Sub
'↑如果xU變數還是空的!就跳出提視窗~~~,之後結束程式執行
xU.EntireRow.Select
'↑如果xU變數不是空的!就將其所在的列選取
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

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