函數語法INDEX(array,row夢到錢包丟了_num,column_num)array:為單元格區域或數組常量。如果數組值包含一行或以列,則只要選擇相對應的一個參數row_num或column_num.如果數組有多行或多列,但是只使用row_num或column_num,INDEX函數則返回數組中的整行或整列,且返回值也為數組。 row_num:為數組中的某行的行序號,函數從該行返回數值。如果省略row_num,則必須有column_num. column _ num:為數組中某列的序列號,函數從該列返回數值。如果省略column_num,則必須有row_num. 函數語法ROW(reference)Reference:為需要得到其行號的單元格或單元格區域。 函數說明如果省略reference,則指ROW函數對所在單元格的引用。如果reference為一個單元格區域,并且ROW函數作為垂直數組輸入,ROW函數則將reference的行號以垂直數組的形式返回。 函數語法COLUMN(reference)Reference:為需要得到其列標的單元格或單元格區域。 函數說明如果省略reference,則假定為是對COLUMN函數所在的單元格的引用。如果reference為一個單元格區域,并且COLUMN函數作為水平數組輸入,COLUMN函數則將reference中的列標以水平數組形式返回。 本例公式說明=IF(MOD(ROW(),3)=0,“”,IF(MOD(ROW(),3)=1,工資明細表!A$3,INDEX(工資明細表!$A:$Q,INT((ROW()-1)/3)+4,COLUMN())))首先分析INDEX(工資明細表!$A:$Q, INT( (ROW( ) -1) /3)+4,其中行參數為INT((ROW()-1)/3)+4,如果在第一行輸入該參數,結果是4,向下拖拽公式治20行,可以看到結果是4;4;4;5;5;5;5;6;6;6如果用“INT((ROW()-1)/3)+4”做INDEX的行參數,公式將連續3行重復返回指定區域內的第4、5、6行的內容,而指定區域是“工資明細表”工作表,第四行以下是人員記錄的第一行,這樣就可以每隔3行得到下一條記錄。用COLUMN()做INDEX的列參數,當公式向右側拖拽時,列參數COLUMN()也隨之增加。 如果公式到此為止,返回的結果是每隔連續3行顯示下一條記錄,與期望的結果還有一定的差距。希望得到的結果是第一行顯示字段、第二行顯示記錄、第三行為空,這就需要做判斷取值。如果當前行是第一行或是3的整數倍加1行,結果返回“工資明細表” 工作表的字段行。如果當前行是第二行或是3的整數倍加兩行,公式返回INDEX的結果;如果當前行是3的整數倍行,公式返回空。 公式中的第一個IF判斷IF(MOD(ROW(),3)=0,“”,******)用來判斷3的整數倍行的情況,如果判斷結果為“真”則返回空,第二個判斷IF(MOD(ROW(),3)=1,工資明細表!A$3,******)用來判斷3的整數倍加1時的情況,判斷結果為“真”則返回工資明細表!A$3即字段行的內容;余下的情況則返回INDEX函數段的結果。 |