返回列表 上一主題 發帖

[發問] 搜尋代號後,尋找對應列數的儲存格

回復 1# abc9gad2016
這是參考  jcchiang 大大的寫法 有空看看是不是這樣 感謝
  1. Public Sub 尋找相對欄位練習()

  2.     Arr = [工作表1!A1].CurrentRegion
  3.     Set xD = CreateObject("Scripting.Dictionary")
  4.    
  5.     For Y = 1 To UBound(Arr, 2)
  6.         xD(Arr(2, Y)) = Y
  7.     Next Y
  8.    
  9.     For X = 3 To UBound(Arr, 1)
  10.         For Y = 2 To UBound(Arr, 2)
  11.             If Arr(X, 1) = [尋找!A2] And Arr(X, Y) <> "" Then
  12.                 E = E + 1
  13.                 Sheets(2).Cells(2, 1 + E) = Arr(2, xD(Arr(2, Y)))
  14.             End If
  15.         Next Y
  16.     Next X

  17. End Sub
複製代碼

TOP

回復 3# samwang


感謝 samwang 前輩的指導 小弟受益良多  請問  samwang前輩  T & ""  為甚麼要串連空白  & "" 的用意是甚麼
可否說明一下  我不太理解 因為字典不是那麼直觀

TOP

回復 5# samwang

謝謝samwang前輩的回覆 學習了  感謝

TOP

本帖最後由 軒云熊 於 2021-1-25 21:24 編輯

回復 11# abc9gad2016

Public Sub 尋找相對欄位練習()
    Application.ScreenUpdating = False
    Range(Sheets(2).Cells(2, 2).End(xlToRight), Sheets(2).Cells(2, 2)).ClearContents
    Arr = Range(Sheets(1).Cells(Rows.Count, 1).End(xlUp), Sheets(1).Cells(6, 1).End(xlToRight))
    Set xD = CreateObject("Scripting.Dictionary")
   
    For Y = 1 To UBound(Arr, 2)
        xD(Arr(1, Y)) = Y
    Next Y
   
    For X = 3 To UBound(Arr, 1)
        For Y = 6 To UBound(Arr, 2)
            If Arr(X, 1) = [尋找!A2] And Arr(X, Y) <> "" Then
                E = E + 1
                Sheets(2).Cells(2, 1 + E) = Arr(1, xD(Arr(1, Y)))
            End If
        Next Y
    Next X
    Application.ScreenUpdating = True
End Sub

建議 修改 samwang 大大的位置 比較好 他的寫法 比我的好很多

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題