2014-02-08 191 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)

相关问题