2016-01-06 29 views
1

我一直在做一個項目在窗口Excel中,但現在我必須將它更改爲的LibreOffice Calc的,函數返回#VALUE!,但在Excel中正常工作。錯誤的數據類型值

這裏的

=IFERROR(INDEX($B$3:$B$1400; SMALL(IF(ISNUMBER((SEARCH($F$3;$B$3:$B$1400))* 
(SEARCH($G$3;$D$3:$D$1400))); ROW($D$3:$D$1400)-MIN(ROW($D$3:$D$1400))+1;"");ROW(A21)));"") 

(它在一定的行和列搜索值)的功能,這是我的工作表又稱電子表格中的LibreOffice Calc中的樣子

enter image description here

我在某處讀到行情不應該在那裏,所以我試圖刪除/替換它們,並從一個單元獲得價值:

- 當我REMOVED引號「」,它返回 - 當我REPLACED行情一個隨機細胞看重

「」用數字它返回的值第一個人,但在下一個單元格(因爲它應該找到每個人有一定的名字或如果離開空白它應該找到每個人在文件中。

回答

1

在Excel中,SEARCH函數將使空白搜索單元格與所有查找單元格匹配。在Calc中,作爲搜索條件的空白單元格將返回錯誤。

獲得「返回所有如果搜索單元格爲空」的行爲,您需要包裝每個您的搜索在IF,在搜索細胞是空白的情況下返回一個數字(所以ISNUMBER函數返回TRUE) :

IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1) 

所以完整的公式將被輸入Ctrl + Shift + Enter(因爲這是一個數組式)在細胞F8爲:

=IFERROR(INDEX($B$3:$B$1400;SMALL(IF(ISNUMBER(IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)); ROW($D$3:$D$1400) - MIN(ROW($D$3:$D$1400))+1;"");ROW(A1)));"") 

複製一nd粘貼你需要的許多單元格。如果要粘貼到大量單元格,可以通過在名稱框(在編輯欄左側)中鍵入範圍(例如F9:F1405)並按Enter來突出顯示它們。

注意,在LibreOffice的版本早於4.4.4.6IFERROR功能不會取消錯誤(見bug 95226)。它應該像你期望的那樣在更新的版本中工作。

編輯

無論是IFERRORISERROR功能通過,而不是返回TRUE或FALSE(似乎是在這兩個OpenOffice和LibreOffice的當前版本的bug,通過這種特殊的錯誤 - 看到了OpenOffice的「問題」一節wiki頁面https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_ISERROR_function#Issues)。

潛在的解決方法是不將任何文本值傳遞給SMALL函數。 (如果找不到匹配項,上面的公式將傳遞一個空文本字符串到SMALL函數,從而產生一個錯誤)。而不是""我們將傳遞數組中的最後一行數 - 爲了使這個範圍中最底部的單元格工作,在這種情況下,第1398行必須是一個空格(或者,如果它可以爲空工具→選項→OpenOffice Calc→查看→UNcheck「顯示零值」)

我們也將確保不要告訴SMALL函數查找大於它提供的範圍大小的級別。像這樣:

=INDEX($B$3:$B$1400;SMALL(IF(ISNUMBER(IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)); ROW($D$3:$D$1400) - MIN(ROW($D$3:$D$1400))+1;1398);MIN(ROW(A1),1398))) 
+1

我只是有一個問題,因爲那些沒有找到任何值的單元格返回*#VALUE *我想知道,是什麼改變了需要被應用到只留下一個空格!否則的功能和解釋是精彩,非常感謝你! – McBooley

+0

@McBooley我在版本4.4.4.3中測試過,看到沒有聲音的單元格返回*#Value!*而不是空白;我認爲從我鏈接到的bug中可以看出,這將在更新的版本中修復。但它聽起來像你有一個更新的版本,並仍然看到*#Value!*被錯誤地通過'IFERROR'函數推送? – Lyrl

+0

我有LibreOffice5,是的,我得到*#值!*從** IFERROR **如果沒有返回的數據,否則當然很好用 – McBooley