2017-09-19 9 views
0

我需要解釋工作簿是如何設計的,以便我嘗試使用的公式更有意義。使用基於外部工作簿使用動態文本的公式

我試圖從中獲取數據的工作簿具有在特定國家的頂部和假日水平運行的日期,以便在相鄰單元格中垂直寫入給定日期。各國並不總是位於同一排,而且前一天不會每天都有相同數量的國家。例如,使用字母來代表任意行數和列數,

workbook1 

      col a  col b  col c 
row 1 1/1/2017 1/2/107 1/3/2017 
row 2 
row 3 Spain  Canada  Australia 
row 4 Colombia Spain  Vietnam 
row 5 Vietnam  England 

另一個工作簿,我有這樣的:

workbook2 

    col a  col b    col c        col d          col e 
    date date column no date column letter      code         Spain 
1/1/2017  a     x   ="'[workbook1.xlsx]sheet'!$" & x & ":$" & x 

date column no專欄中,我有一個公式,讓我從第一個工作簿的左側存在日期的列號。使用這個數字,我將它轉換爲date column letter列下的字母。使用這個,我試圖在workbook2中建立一個動態的MATCH公式,它會告訴我它是否在第一個工作簿中找到了國家。比賽公式將被放置在「西班牙」的正下方並寫作=MATCH(E2, D2, 0)。這不會產生預期的結果。我不確定在workbook2的d列中寫入外部參考作爲字符串,並將其提供給公式正在使其工作。

回答

1

不需要所有這些幫助列,也不需要將列號轉換爲列字母。如果您使用索引,則可以根據列號構建一個範圍。

=MATCH(E1,INDEX([Workbook1.xlsx]Sheet1!$3:$3,MATCH(A2,[Workbook1.xlsx]Sheet1!$1:$1,0)):INDEX([Workbook1.xlsx]Sheet1!$20:$20,MATCH(A2,[Workbook1.xlsx]Sheet1!$1:$1,0)),0) 

此公式已應用於工作簿的單元格E2的前景中。 Workbook1在後臺。該公式使用兩個索引公式構建一個範圍。第一個找到正確的列並返回第3行中的單元格。第二個索引找到正確的列並返回第20行中的單元格。然後將返回的兩個範圍與「:」運算符組合爲連續範圍。該範圍現在是正確的列,從第3行到第20行。然後將該範圍饋送到匹配功能,該功能試圖找到「西班牙」或該範圍內的單元格E1的值。

enter image description here

注意Workbook1必須打開公式工作。如果未打開,則公式會返回#Ref!錯誤。

如果未在範圍內找到E1中的國家,則該公式會返回#N/A!錯誤。您可以通過將整個公式包裝成IfError或IF(IsNumber(theformula),"found","not found")

+0

這可以抑制這一點。這工作得很好。非常感謝你! – erik7970

相關問題