返回列表 上一主題 發帖

[發問] 抓取參照頁面的 sheet 名稱

[發問] 抓取參照頁面的 sheet 名稱

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

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

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

附上簡單的範例
希望能幫幫忙
謝謝~
範例.zip (2.95 KB)

回復 1# Genie

C2=IF(ISERROR(VLOOKUP(A2,'T7'!$A:$B,2,0)),"P123","T7")

TOP

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

TOP

可能需要使用VBA來撰寫回饋欄位資訊。這可能需要一點時間去撰寫。(小弟功力有限)

TOP

回復 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
複製代碼
SheetName.zip (10.27 KB)
學海無涯_不恥下問

TOP

不好意思 設定 A 的這裡我看不太懂 不知道可不可以解釋一下?
謝謝~
Set A = .Range(Rng.Address(, , xlA1)).Find(Fn)

TOP

回復 6# Genie

找到a欄對應的儲存格
學海無涯_不恥下問

TOP

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

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

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

請問這該如何調整呢?
謝謝~

TOP

回復 8# Genie

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

TOP

在這個 excel 檔會抓不到 sheet 的名稱
範例.zip (15.2 KB)

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題