Board logo

標題: [發問] 抓取參照頁面的 sheet 名稱 [打印本頁]

作者: Genie    時間: 2012-6-4 17:35     標題: 抓取參照頁面的 sheet 名稱

本帖最後由 Genie 於 2012-6-4 17:42 編輯

請問有沒有辦法在儲存格中顯示我是從哪個 sheet 抓取資料的 sheet 名稱?

因為我有一個檔案 每個 sheet 都長得很像
有時候會有點難判斷是從哪一個 sheet 抓取的資料
所以想要新增一欄來顯示我是從哪個 sheet 抓取的

附上簡單的範例
希望能幫幫忙
謝謝∼
[attach]11251[/attach]
作者: register313    時間: 2012-6-4 17:44

回復 1# Genie

C2=IF(ISERROR(VLOOKUP(A2,'T7'!$A:$B,2,0)),"P123","T7")
作者: Genie    時間: 2012-6-5 08:11

請問我若有六個 sheet 的話
這樣在 B 欄就要用五個 IF
在 C 欄又用五個 IF 去找出是對應到哪個 sheet
這樣當資料量一多時 整個 excel 跑起來的速度是很慢的
所以想問有沒有辦法在 C 欄不要用 IF 的情況下去找出所對應的 sheet?
作者: chchang76    時間: 2012-6-5 08:40

可能需要使用VBA來撰寫回饋欄位資訊。這可能需要一點時間去撰寫。(小弟功力有限)
作者: Hsieh    時間: 2012-6-5 08:54

回復 3# Genie

自定義函數
  1. Function LocationName(Fn As Range, Rng As Range, item_name As Integer) As String
  2. Dim A As Range
  3. For Each sh In Sheets
  4.   With sh
  5.   If sh.Name <> ActiveSheet.Name Then
  6.   Set A = .Range(Rng.Address(, , xlA1)).Find(Fn)
  7.   If Not A Is Nothing Then
  8.     Select Case item_name 'item_name=0傳回工作表名稱,item_name=1傳回儲存格位址
  9.     Case 0
  10.     LocationName = .Name
  11.     Case 1
  12.     LocationName = A.AddressLocal
  13.     End Select
  14.     Set A = Nothing
  15.     Exit For
  16.   End If
  17.   End If
  18. End With
  19. Next
  20. End Function
複製代碼
[attach]11256[/attach]
作者: Genie    時間: 2012-6-5 10:57

不好意思 設定 A 的這裡我看不太懂 不知道可不可以解釋一下?
謝謝∼
Set A = .Range(Rng.Address(, , xlA1)).Find(Fn)
作者: Hsieh    時間: 2012-6-5 11:28

回復 6# Genie

找到a欄對應的儲存格
作者: Genie    時間: 2012-6-5 14:08

本帖最後由 Genie 於 2012-6-5 14:09 編輯

我套用到其它的 excel 檔案
但是只會帶出第一個 sheet 的 sheet 名稱
其它的 sheet 名稱都顯示為空白
這是否是因為每個 sheet 的欄位都不一樣的關係?
(有的 sheet 是從 A 欄開始執行 vlookup,有的是從 B 欄開始執行 vlookup)

另外
在 LocationName 函數的第二個欄位
若是選取整欄 $B:$B 顯示不會有問題
但若是有指定範圍 $B$2:$B$50 顯示出來的會是空白

請問這該如何調整呢?
謝謝∼
作者: Hsieh    時間: 2012-6-5 16:29

回復 8# Genie

此函數是在範圍中找到你要的資料後,傳回該資料的工作表名稱或是儲存格位址
所以,=LocationName(A2,$A$1:$A$100,0)
一樣可以傳回第一個找到資料的工作表
假如欄位不確定在A攔,可改為=LocationName(A2,$A$1:$B$100,0)
只要範圍內有出現該item就能傳回工作表名稱才對
如果仍然無法達到你的需求,請上傳你出錯的檔案並說明你的需求
作者: Genie    時間: 2012-6-5 17:10

在這個 excel 檔會抓不到 sheet 的名稱
[attach]11271[/attach]
作者: register313    時間: 2012-6-5 17:46

回復 10# Genie

C3=LocationName($B3,$A:$D,0)

Hsieh超版前面已說明過自定義函數LocationName的用法
關鍵在於第2個引數 除了Status工作表之外其餘工作表之儲存格範圍(欲尋找ID名稱之儲存格範圍)
=>P12,P3,WT工作表之ID欄位不一定位置,列數也不一定
   故可設定P12,P3,WT工作表之尋找之儲存格範圍為$A:$D
    只要在P12,P3,WT工作表$A:$D儲存格範圍內找到ID名稱,就傳回該工作表名稱
作者: Genie    時間: 2012-6-5 20:26

謝謝 register313 的解說
是我誤會 Hsieh 超級板主的意思了
我一直以為第二個引數的範圍是 status 裡 ID 的範圍
沒想到是要尋找的 sheet 裡的 ID 範圍
謝謝解說!
也謝謝 Hsieh 超級板主!
作者: Genie    時間: 2012-6-6 09:24

不好意思 我今天在使用上又出現了一些問題
就是 excel 檔案中的 P12/ P3/ WT 是從網頁上下載的資料
為什麼當我更新完 P12/ P3/ WT 的資料後
LocationName 的這個函數會顯示 #value!
然後必須再重新計算儲存格後才會顯示出值呢?




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