Vba 函数将字符串拆分为多个字符
我想创建一个自定义函数,该函数接受所选参数并将其内容拆分到不同的单元格中 例如:Vba 函数将字符串拆分为多个字符,vba,excel,Vba,Excel,我想创建一个自定义函数,该函数接受所选参数并将其内容拆分到不同的单元格中 例如: 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 th
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
当从工作表调用此UDF时,您不能修改UDF中的单元格(实际上有可能的方法,但它们很复杂,我不建议使用它们)。您可以改为使用此函数:
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
如何使用它:
B1:F1
)=SplitWord(A1)
如果您的目标范围在一列中(例如
B1:B5
),使用=TRANSPOSE(SplitWord(A1))
在从工作表调用此UDF时,您不能修改UDF中的单元格(实际上有可能的方法,但它们很复杂,我不建议使用它们)。您可以改为使用此函数:
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
如何使用它:
B1:F1
)=SplitWord(A1)
如果您的目标范围在一列中(例如
B1:B5
),请使用=TRANSPOSE(SplitWord(A1))
您也可以使用简单的Excel公式执行此操作-将此单元格放在B1中并复制到C1-F1:
=MID(A1,COLUMN()-COLUMN($B$1)+1,1))
=中间(A1列()-列($B$1)+1,1))
您也可以使用简单的Excel公式执行此操作-将此单元格放在B1中,并将其复制到C1-F1: =MID(A1,COLUMN()-COLUMN($B$1)+1,1)) =中间(A1列()-列($B$1)+1,1)) 试着把它拖到左边,它会来的。试着把它拖到中间($A1,COLUMNS($A$1:A$1),1),然后把它拖到左边,它会来的
将其放置在任何第一行单元格中:
=MID($1,ROW(),1)将其放置在任何第一行单元格中: =MID($1,ROW(),1)1)将要拆分的文本放入单元格A1() 2) 然后将此函数粘贴到所需的任何单元格() 3) 将鼠标光标移动到粘贴上述函数()的单元格右下角的小块上 4) 单击并按住填充手柄,然后向右拖动以填充序列()1)将要拆分的文本放入单元格A1() 2) 然后将此函数粘贴到所需的任何单元格() 3) 将鼠标光标移动到粘贴上述函数()的单元格右下角的小块上
4) 单击并按住填充手柄,然后向右拖动以填充序列()VBA用户定义函数无法更改其他单元格的值。也许您可以使用工作表更改事件,或者只保留a列中的原始值,并在其他列中使用Excel公式来保存单独的字母。请注意,尝试使用
Mid
函数,而不是Left
和Right
。VBA用户定义函数不能更改其他单元格的值。也许您可以使用工作表更改事件,或者只保留a列中的原始值,并在其他列中使用Excel公式来保存单独的字母。作为旁注,请尝试使用Mid
函数,而不是Left
和Right
。如果不真正使用它,则只会令人遗憾地呈现第一个字母。是否有办法将函数中的变量设为全局变量?您是否选择了B1:F1,并按了我编写的CTRL+SHIFT+ENTER键?效果非常好。。但是我不想选择任何东西,因为我有一个单词列表,每个单词包含不同数量的字母,所以对所有单词都做相同的操作是没有用的!如果有必要,用户定义的函数或宏也将适用?它不会真正工作,只会渲染第一个字母不幸的是,有没有办法将函数中的变量设置为全局变量?您是否已选择B1:F1并按CTRL+SHIFT+ENTER(如我所写)键?工作正常。。但是我不想选择任何东西,因为我有一个单词列表,每个单词包含不同数量的字母,所以对所有单词都做相同的操作是没有用的!是否有必要让用户定义的函数或宏也适用?这似乎与@rbhattad给出的答案相同。我建议不要在SO之外大量使用图像。@Scorpio590尽管我100%同意你的观点,这是一个“重复”的答案,但请记住,“I.stack.imgur.com”是SO用于链接和嵌入图像的网站。这似乎是@rbhattad给出的相同答案。我建议不要在SO之外大量使用图像。@Scorpio590尽管我100%同意你的观点,即这是一个“重复”的答案,但请记住“I.stack.imgur.com”是SO用于链接和嵌入图像的网站。