2014-06-12 111 views
1

我有一個非常大的文件(800萬行)我與地址欄輸入的PowerPivot我想分割:拆分文本列

enter image description here

我試圖LEFT和找到,但不能得到輸出,我想要的。

回答

4

隨着A1數據,B1輸入:

=TRIM(MID(SUBSTITUTE($A1,"#",REPT(" ",999)),COLUMNS($A:A)*999-998,999)) 

和複製對面。

+0

非常感謝你。 – SouravD

+0

非常歡迎! –

3

文本到列與#作爲分隔符可能適合,但可能與TRIM爲每個結果單元格。

1

考慮到現在有(版本2010+)的菜單命令可以做到這一點,可以通過導入嚮導來完成,VBA功能可以輕鬆完成此操作,並且其他解決方案已經發布,這可能看起來沒有必要。儘管如此,這是使用數組公式的另一種方法。

您需要有一個標題行,並在將顯示分隔值的列中填充增量整數(1,2,3,...)。您需要與分隔值相同的列數。本例中使用的分隔符是「#」。必須爲公式選擇第二個分隔符(示例中的「@」,但可能更好,類似於CHAR(1))。

如果Excel具有Split功能(如VBA),但它不會,這將是理想選擇。

如果Excel有一個FIND函數可以找到第n個字符的出現,但它不會。

但是,Excel確實有SUBSTITUTE函數,它可以在第n次出現的字符上進行操作,然後就可以找到該字符。所以一個麻煩的解決方法是可能的。

=FIND("@",SUBSTITUTE($A2,"#","@",5)) 

將計算到$ A2中字符串中的字符位置,在該位置出現第5個分隔符「#」。

例如

$A2 = "Hello#my#name#is#Bob#What#is#your#name?" 

SUBSTITUTE($A2,"#","@",5) = "Hello#my#name#is#[email protected]#is#your#name?" 

FIND("@",SUBSTITUTE($A2,"#","@",5)) = 21 

爲了使它更一般工作,墊串的兩端安裝一個分隔符,並使用MID功能到你想要的文本部分隔離開來。使用列標題行(例如B $ 1:M $ 1)來指定哪個分隔值將出現在該列中。

=MID($A2, FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1)), FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1+1)) - FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1)) - 1) 

可以跨越複製式,或者可以跨第一列突出,然後在適當位置B $ 1與底座陣列範圍在式類型(例如B $ 1:F $ 1),並將其保存作爲使用CTRL + SHIFT + ENTER的數組公式。

例如,

{=MID($A2, FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1:F$1)), FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1:F$1+1)) - FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1:F$1)) - 1)} 

將是B2陣列式:F2到A2分成5個獨立#-delimited值,假設B1:F1跨越包含1,2,3,4,5細胞。因爲SEARCH不區分大小寫,所以使用通配符(*,?)。

+0

優秀的解釋! – HarveyFrench

+0

致評論者:我通過加-1來編輯它,因爲我相信沒有它,解決方案提供不起作用! – HarveyFrench