Board logo

標題: 請問VBA 尋找資料的問題 [打印本頁]

作者: tonycho33    時間: 2011-11-24 18:32     標題: 請問VBA 尋找資料的問題

請問一下 VBA尋找資料
Set c = Worksheets("AA").Columns("F").Find(.Cells(i, 7), LookIn:=xlValues, LookAt:=xlWhole)
是指到"AA"工作表中的F欄位中 尋找符合Cells(i, 7)條件的值
原本是一對一搜尋
可以一對多整列帶出嗎?
如附件

謝謝
作者: GBKEE    時間: 2011-11-24 20:46

回復 1# tonycho33
用壓縮檔 給個Excle檔案
作者: Hsieh    時間: 2011-11-24 21:40

回復 1# tonycho33
  1. Sub nn()
  2. Range([J7], [J7].End(xlToRight)).ClearContents
  3. Set a = [F:F].Find([I7], lookat:=xlWhole)
  4. i = i + 1
  5. [I7].Offset(, i) = a.Offset(, 1)
  6. Do Until a.Offset(i) <> "" Or a.Offset(i, 1) = ""
  7.   [I7].Offset(, i) = a.Offset(i, 1)
  8.   i = i + 1
  9. Loop
  10. End Sub
複製代碼

作者: tonycho33    時間: 2011-11-25 09:41

回復 1# tonycho33
作者: Hsieh    時間: 2011-11-25 10:02

回復 4# tonycho33
  1. Sub nn()
  2. Range([H5], [H5].End(xlToRight)).ClearContents '清除之前內容
  3. Set a = [B:B].Find([G5], lookat:=xlWhole) '找到G5在B欄的位置
  4. i = i + 1
  5. [G5].Offset(, i) = a.Offset(, 1) 'G5向右寫入
  6. Do Until a.Offset(i) <> "" Or a.Offset(i, 1) = "" '執行迴圈直到B欄不等於空白或C欄不等於空白
  7.   [G5].Offset(, i) = a.Offset(i, 1) 'G5向右寫入
  8.   i = i + 1
  9. Loop
  10. End Sub
複製代碼

作者: tonycho33    時間: 2011-11-25 11:36

回復 5# Hsieh
請問一下,我若想讓G5以下每個都能對應,加入j的變數,可是這樣跑起來卻是出現一遍後就消失
麻煩解答 謝謝

    Sub nn()
With Worksheets("Sheet1")
Range([H5], [H5].End(xlToRight)).ClearContents '清除之前內容

for j=j+1
Set a = [B:B].Find(.cell(j,5), lookat:=xlWhole) '找到G5在B欄的位置

i = i + 1

cell(j,5).Offset(, i) = a.Offset(, 1) 'G5向右寫入

Do Until a.Offset(i) <> "" Or a.Offset(i, 1) = "" '執行迴圈直到B欄不等於空白或C欄不等於空白

  cell(j,5).Offset(, i) = a.Offset(i, 1) 'G5向右寫入

  i = i + 1

Loop
next j
end with
End Sub
複製代碼
作者: GBKEE    時間: 2011-11-25 14:34

回復 6# tonycho33
  1. Sub Ex()
  2.     Dim Criterion As Range, Rng As Range, E As Range
  3.     Set Criterion = Range([G5], [G5].End(xlDown))               'G5以下的範圍
  4.     Criterion.CurrentRegion.Offset(, 1) = ""                    'G5的連續範圍往右1欄之範圍
  5.     For Each E In Criterion                                     '依序處理 G5以下的範圍的Cell
  6.         Set Rng = [B:B].Find(E, lookat:=xlWhole)                '找到G5在B欄的位置
  7.         If Not Rng Is Nothing Then
  8.             i = 0
  9.             Do
  10.                 E.Offset(, i + 1) = Rng.Offset(i, 1)
  11.                 i = i + 1
  12.             Loop Until Rng.Offset(i) <> "" Or Rng.Offset(i, 1) = ""
  13.         End If
  14.     Next
  15. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)