我弄乱了一个电子表格,其中包含已插入单元格中的邮政地址'评论 每个评论都包含一个由可变数量的行组成的地址(该死的英国地址,它们最多可以有7行!),格式如下:
Line1,
Line2,
Line3,
[...],
State
由于技能不佳,我设法用VBA脚本提取注释,在单个单元格中获取以下字符串:
Line1,Line2,Line3,[...],State
此时,逗号之间的每个字符串都必须提取到自己的单元格中。 我设法使用以下公式提取前3行:
对于Line1:
=LEFT(A8;(SEARCH(",";A8))-1)
对于Line2:
=MID(A8; SEARCH(",";A8)+1; SEARCH(","; A8; SEARCH(","; A8)+1)-SEARCH(",";A8)-1)
对于Line3:
=MID(A8; SEARCH(",";A8;SEARCH(",";A8;SEARCH(",";A8;SEARCH(",";A8)))+1)+1;SEARCH(","; A8; SEARCH(","; A8;SEARCH(",";A8)+1)+1)-SEARCH(",";A8;SEARCH(",";A8)+1)-1)
从这一点开始,我开始从脑中出现溢出错误......我可能需要几天的睡眠时间。
任何人都可以帮助我到达" line6",最后建议我如何取出" State line"以逗号结束?
我以为我可以退出'#34;州" line = = RIGHT(",&#34 ;; SEARCH(",&#34 ;; A8)-1)但我明显做错了,因为它会删除逗号而不是一个字符串。
我想我可以用VBA脚本做任何事情,但我还不熟练:(
答案 0 :(得分:2)
以 A1 中的 A1 中的逗号分隔数据输入:
=TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
并复制。例如:
<强> 注意:的强>
为什么不使用 TextToColumns ?
答案 1 :(得分:1)
如果您想以编程方式执行此操作而不是使用内置命令,请查看split函数以切断逗号分隔的字符串。它会将您的输入字符串拆分为一个数组。然后你可以用数组做任何你喜欢的事。
Dim Names() As String
Names() = Split(inputValue, ",")
For i = 0 To UBound(Names)
' do what you want with each piece
Next
Gary的学生答案非常适合使用内置功能。</ p>
答案 2 :(得分:0)
如果您想要VBA解决方案:
Sub spitString()
Dim sourceRange As Range
Dim stringArr() As String
Dim i As Integer
Set sourceRange = ActiveSheet.Range("A1")
stringArr = Split(sourceRange.Value, ",")
For i = LBound(stringArr) To UBound(stringArr)
sourceRange.Offset(0, i + 1).Value = stringArr(i)
Next i
End Sub
答案 3 :(得分:0)
您可以避免添加评论:您是否知道用户可以通过按ALT + RETURN在单元格内添加换行符?
如果有高行d是一个问题并且你不喜欢这种格式化,另一种方法可能是编写一个简单的代码,当用户点击某个范围时,它会改变当前行的高度。它会使其他行不那么高。也许。
只是一个想法。它有利于保持简单。
哈维。