
我有一個包含以下模板的 xls 列:
Model : QE85Q80T,Diagonala cm / inch : 216 cm / 85 inch,Smart TV : Da,Format : Ultra HD 4K,Tip ecran : QLED,Rezolutie (pixeli) : 3840 x 2160,Tuner Digital : Da (DVB-T2 / C / S2) x 2,Difuzor integrat : 60 W,Wireless : Da,Ethernet : Da,Iesire audio digitala (optica) : x 1,CI (Slot) : PLUS,USB 2.0 : x 2,HDMI : x 4,Culoare : Negru,Putere consumata (W) : 257,Dimensiuni cu stand (mm) : 1892.8 x 1163.1 x 338.8,Greutate (Kg) : 50.1
請注意變數:「對角線公分/英吋」; “智慧電視”; “格式”等等...
它們都可以有不同的值。
我試圖完成的是在不同的單元格中提取“之間的值”對角線公分/英吋:“和第一個”,“ - 在這種情況下,該值將是”216 厘米/85 英寸」。
另一個儲存格中的內容相同,其值介於“智慧電視 :“和第一個”,“ - 價值將是”達「等等其餘的......
經過谷歌多次搜尋後,我得出了這個公式:
=MID(F2,搜尋("對角線公分/英吋:",F2)+3,搜尋(",",F2)-搜尋("對角線公分/英吋:「,F2)-4)
問題是它沒有給我任何回報。
我做錯了什麼?
答案1
答案2
答案3
對於使用什麼,也許人們會喜歡以下方法:
=LET(SearchCell,A1, StartingString,"Diagonala cm / inch : ", EndingString,",", MID(SearchCell, FIND(StartingString,SearchCell) + LEN(StartingString), FIND(EndingString,SearchCell,1+FIND(StartingString,SearchCell)) - (FIND(StartingString,SearchCell)+LEN(StartingString)) ) )
(我喜歡Isolated
使用 來LEN()
避免對字串的長度進行硬編碼。當然,人們會知道這一點,所以這不會成為問題,但可以這麼說,它就到此為止了,並且不容易擴展到更通用的解決方案在編寫基本公式並使用它一段時間後可能會想要實現這一點,如果可能的話,升級應該會有所幫助!
該方法是找到所需結果的起點,然後是終點,以及輸入字串所需的字元數。因此FIND()
,加上定位字串的長度。並且還FIND()
可以在該點之後找到“,”,該點需要在起點上添加 1,以便FIND()
從那裡開始,並且不會與前面的逗號混淆。
這很簡單,他們稱之為“醜陋”......哦好吧......對於升級,請使用該LET()
功能。人們可能會對此非常著迷,但我建議僅將其用於更改公式的輸入:要查找的單元格、起始字串和結束字串。這樣,更改所尋找的儲存格就很容易,因為它只發生在一個位置,而不是公式使用它的六個左右。兩個邊界字串也很容易編輯,因為它們也位於開頭,因此可以輕鬆調整公式以進行第二次搜尋和其他搜尋。使用輸入單元格包含邊界字串也變得非常容易。
我認為更多地使用LET()
這裡會妨礙對公式工作的理解,儘管其他大腦的工作方式不同,並且可能喜歡將其組件放入Let()
單元格範圍命名範圍的形式(Excel參考那裡,程式設計師將它們稱為變量),然後工作公式將是一個最小的事情。如果這會減少公式的整體大小,我可能會建議這樣做,但在這種情況下不會,所以......但實際上,這對其他人來說會有相反的意義,所以對他們來說,為什麼不是?
我認為任何閱讀該問題的人實際上都會想要上述內容,一種完成所討論內容的方法。但實際上真正要問的是,為什麼透過谷歌找到的給定公式會失敗?
基本上,因為它不尋找正確的開始,或計算要採用的正確的字串長度。例如,第一個SEEARCH()
:它找到邊界字串的開頭並向其添加... 3...。沒有充分的理由考慮公式的邏輯本質上與這些答案所使用的相同。需要MID()
在完整的邊界字串之後開始建構字串。字串有 22 個字符長,而不是 3 個字符,所以...然後,第三個參數MID()
,即要返回的字串的長度,結果是錯誤的。它找到邊界字串之前的逗號,並從那裡開始實際給出負長度,從而產生錯誤。其他輸入資料可能會給它一個實際的回傳值,但它實際上永遠不會給出正確的回傳值,因為它使用的是完全錯誤的輸入選擇。因此,糾正這些問題,您應該有一個可行的公式。不錯的方法,但不太好的實作。但要找到一個好的方法幾乎總是更困難的事情!只需重新考慮如何選擇導致生成數字作為該糟糕MID()
函數的參數的細節。