Board logo

標題: 用公式追蹤出自那一欄位 [打印本頁]

作者: enoch    時間: 2012-1-10 18:38     標題: 用公式追蹤出自那一欄位

能夠輸入資料, 可以追蹤到在那一個表中出現
例如輸入
vwx顯示為表3
tde 顯示為表4嗎
請指教


表1        表2        表3        表4
abc        jkl        stu        zbc
def        mno        vwx        eqa
ghi        pqr        yqa        tde
作者: register313    時間: 2012-1-10 19:50

本帖最後由 register313 於 2012-1-11 00:54 編輯

回復 1# enoch

初學者VBA

出自何工作表
  1. Sub cc()
  2. ser = InputBox("請輸入要尋找的值:")
  3. If Trim(ser) <> "" Then
  4.   For sht = 1 To Sheets.Count
  5.     Set rng = Sheets(sht).Cells.Find(what:=ser, lookat:=xlWhole)
  6.     If Not rng Is Nothing Then
  7.        out = out & Sheets(sht).Name & Chr(10)
  8.     End If
  9.   Next sht
  10. End If
  11. If out = "" Then
  12.    MsgBox "沒有找到"
  13. Else: MsgBox "尋找的值" & ser & "出現在工作表" & Chr(10) & out
  14. End If
  15. End Sub
複製代碼
出自何欄位
  1. Sub dd()
  2. ser = InputBox("請輸入要尋找的值:")
  3. If Trim(ser) <> "" Then
  4.   For C = 1 To Range("A1").End(xlToRight).Column
  5.     Set rng = Columns(C).Find(what:=ser, lookat:=xlWhole)
  6.     If Not rng Is Nothing Then
  7.        out = out & Cells(1, rng.Column) & Chr(10)
  8.     End If
  9.   Next C
  10. End If
  11. If out = "" Then
  12.    MsgBox "沒有找到"
  13. Else: MsgBox "尋找的值" & ser & "出現在" & Chr(10) & out
  14. End If
  15. End Sub
複製代碼

作者: register313    時間: 2012-1-11 12:49

回復 2# register313

="表"&MAX((A2:D4=F1)*COLUMN(A2:D4))  陣列公式
F1為欲查詢之資料
作者: dino1978    時間: 2012-1-12 07:14

回復 3# register313


    register313大大,
想請教一下
out = out & Cells(1, rng.Column) & Chr(10)

out = Cells(1, rng.Column) & Chr(10)
有什麼樣的不同?
out = out & Cells(1, rng.Column) & Chr(10)
這 一段我不太懂是什麼意思 再麻煩您抽空解答, 謝謝
作者: register313    時間: 2012-1-12 08:12

回復 4# dino1978

因本程式是放在FOR迴圈內(設有3次迴圈)

                out = Cells(1, rng.Column) & Chr(10)  
第1迴圈out之值        第1次儲存格之值+分行         
第2迴圈out之值        第2次儲存格之值+分行         
第3迴圈out之值        第3次儲存格之值+分行            
最後輸出out之值       第3次儲存格之值+分行

                 out = out & Cells(1, rng.Column) & Chr(10)
第1迴圈out之值        空值+第1次儲存格之值+分行
第2迴圈out之值        第1次儲存格之值+分行+第2次儲存格之值+分行
第3迴圈out之值        第1次儲存格之值+分行+第2次儲存格之值+分行+第3次儲存格之值+分行
最後輸出out之值       第1次儲存格之值+分行+第2次儲存格之值+分行+第3次儲存格之值+分行
作者: dino1978    時間: 2012-1-14 14:22

回復 5# register313

謝謝register313大大  明白了,  謝謝您詳盡的解說!!
作者: GBKEE    時間: 2012-1-14 15:11

本帖最後由 GBKEE 於 2012-1-15 07:07 編輯

回復 2# register313
出自何欄位 :  如尋找的值在一欄中出現數次會有誤差
  1. Option Explicit
  2. Sub Ex()
  3.     Dim MyText As String, Rng As Range, F_Address As String, TheFind As String
  4.     MyText = Trim(InputBox("請輸入要尋找的值:"))
  5.     If MyText <> "" Then
  6.         Set Rng = Range("A1").CurrentRegion.EntireColumn.Find(MyText, lookat:=xlWhole)
  7.         If Not Rng Is Nothing Then
  8.             F_Address = Rng.Address
  9.             Do
  10.                 TheFind = IIf(TheFind = "", Rng.Address(0, 0), TheFind & "   " & Rng.Address(0, 0))
  11.                 Set Rng = Range("A1").CurrentRegion.EntireColumn.FindNext(Rng)
  12.             Loop Until F_Address = Rng.Address
  13.         End If
  14.     End If
  15.     If TheFind <> "" Then
  16.         MsgBox MyText & "  位於 : " & TheFind
  17.     Else
  18.         MsgBox "沒有找到  " & MyText
  19.     End If
  20. End Sub
複製代碼





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