2014-02-08 133 views
0

我想創建一個自定義函數,它可以接受所選參數並將其內容分割到不同的單元格中。將字符串拆分爲多個字符的函數

例如:

A1=ABCDE

成爲

B1=A, C1=B, D1=C, E1=D, F1=E

所以這是我的嘗試:

Function SplitWord(Word) 
NbCar = Len(Word) // get the number of cardinals of the text 
SplitWord = Left(Word, 1) // put the first letter in the cell that called the function 
t = NbCar - 1 
For i = 1 To t 
ActiveCell.Offset(0, i) = Right(Left(Word, i), 1) 
Next 
End Function 
+0

VBA用戶定義函數不能更改其他單元格的值。也許您可以改爲使用WorkSheet_Change事件,或者只保留A列中的原始值並在其他列中使用Excel公式來保存單獨的字母。作爲一個側面說明,請嘗試使用「Mid」功能,而不是「Left」和「Right」。 –

回答

0

您不能修改細胞UDF,打電話時這張UDF從表格(實際上是e是可能的方式,但它們很複雜,我不建議使用它們)。您可以使用此功能可按代替:

Function SplitWord(Word As String) As String() 
    Dim res() As String 
    ReDim res(1 To Len(Word)) 
    For i = 1 To Len(Word) 
     res(i) = Mid(Word, i, 1) 
    Next 
    SplitWord = res 
End Function 

如何使用它:

  1. 選擇目標範圍(例如B1:F1
  2. 與選定的範圍在公式編輯欄中輸入公式=SplitWord(A1)
  3. 新聞CTRL + SHIFT + ENTER 評估它

如果在一列目的地範圍(例如B1:B5)使用=TRANSPOSE(SplitWord(A1))

+0

不是真的工作它只呈現不幸的第一個字母 – user3288319

+0

有什麼辦法讓一個函數內的變量成爲一個全局變量? – user3288319

+0

您是否選擇了B1:F1並按下CTRL + SHIFT + ENTER來輸入? –

2

你也可以用簡單的Excel公式做到這一點 - 發生在B1這種細胞並將其複製到C1-F1:

 
=MID(A1,COLUMN()-COLUMN($B$1)+1,1)) 
1

嘗試=MID($A1,COLUMNS($A$1:A$1),1),然後將其留下,必須提出。

2
  1. 輸入要在單元格A1中拆分的內容。
  2. 單元格B1粘貼此:= MID($ A $ 1,COLUMN() - COLUMN($ B $ 1)+1,1)
  3. 向右拖動
0

地點這在任何第一行單元格: = MID($ A $ 1,ROW(),1)

相關問題