
答案1
您的數字中有不同類型的空格(不間斷空格)。這些通常是CHAR(160)
。 TRIM 和 CLEAN 都不會刪除這些字符,因為 Excel 將它們視為有效字符。但這使得「數字」文字字串無法相乘。
因此,我們使用 SUBSTITUTE 來刪除這些字符,並添加 TRIM 和 CLEAN 以達到良好的效果:
=TRIM(CLEAN(SUBSTITUTE(C2,CHAR(160),"")))*2.5
答案2
你可能會遇到很多“不間斷空格「這不是由 處理的CLEAN()
。從網頁獲取資料時,這種情況很常見,因為它們(如PDF)只關心視覺呈現,而不是抓取資料以供進一步使用。但它來自於輸出資料的程序,尤其是當他們並不想像資料的一般用途,而是一小部分人在使用它,或者 28 年前編寫 CSV 輸出功能時就這樣做了,而且從未更新過。
這個問題在電子表格中更容易處理,因為您實際上只需要數字部分,而不需要任何不是數字的東西。
如果您需要保留負值的指標,那就更難了。或不是這些空格的字元。或者像我一樣,取得需要輸出為離散數字的字串。在類似“90.02 45.55 .062”的字串中,但保留下來以便可以提取它們。
但是,您只需要單個字串中的數字並由 Excel 考慮數字。下面的公式可以做到這一點:
=VALUE(TEXTJOIN(,TRUE,IFERROR(MID(C1,SEQUENCE(1,LEN(C1)),1)*1,"")))
它用於SEQUENCE()
取得一系列加 1 且與目標長度一樣長的值。然後它使用這些來指定MID()
輸出目標中字元矩陣的函數的起始點。然後,它對*1
矩陣中的數字進行數學運算 ( ),但對於非數字 (0-9) 的任何內容都會給出錯誤。IFERROR()
在彈出錯誤的任何地方(目標沒有數字的地方)將該字串轉換為帶有“”的數字。TEXTJOIN()
然後將該矩陣轉換為一個簡單的輸出字串,忽略那些「」元素,這樣您現在就有了一個有用的字串,其中僅包含目標中存在的數字。它被視為文字並將如此顯示。
此時,如果您擁有最新版本的 Excel,則該公式對您很有用。這是因為 Excel 會識別一串數字,即使格式化為文字(它們只是格式化,畢竟沒有以某種基本方式進行更改),就像數字一樣,如果呈現給需要或合理期望的函數,僅數字數據作為其輸入。因此「C1+1」甚至會將該文本視為數字並進行加法,而不是給出錯誤或給出 0+1=1。然而,並非所有函數都會以這種方式處理輸出。VLOOKUP()
會將其視為任何看起來的東西,在本例中為文本,並且在數字表中查找找不到匹配項,從而給您一個錯誤。因此,我將上面的內容包裝起來VALUE()
以完成,以便將結果視為一個數字,如果您使用結果作為查找函數的輸入(就像其他人可能做的那樣),它會起作用。
因此,您可以從中刪除該函數,它仍然會根據需要進行標記乘法。
但是,如果您沒有新SPILL
函數,或者特別是如果您使用的是相當舊的 Excel 版本,則以下公式基本上適用於 Windows 版 Excel 的所有版本,並且始終會產生數字輸出:
{=ROUND(NPV(-0.9,0,IFERROR(MID(L1,LEN(C1)-ROW(INDIRECT("C1:I"&LEN(C1)))+1,1)/100,"")),3)}
請注意,它是一個消費者教育協會公式。用作常規公式時,它有時會刪除最後兩位數字......並且輸出被格式化為貨幣。 (Excel 很有幫助...因為NPV()
這是一個財務函數,您必須希望將其格式化為貨幣,對嗎?)
上面的公式來自“很久以前在互聯網上的某個地方”......我希望我能相信我的來源,但我不記得來源了。向一些有用的大師道歉。
很高興你問這個問題,因為我在很多地方都有這個問題,需要更新以了解如何SEQUENCE()
幫助一個人。更不用說將函數中內部矩陣的變更替換為輸出的有用字串,TEXTJOIN()
因為現在也可用!立竿見影的好處!這是一件美妙的事!