我有一列有大约60个具有值或不同长度的单元格。每个(或至少大多数)值都在值中包含数字字符。我想将列单元格拆分成更多列,我通常会使用excel的'tekst to columns'函数。
但是此函数没有在第一个数字字符处拆分值的高级选项。基于空格,逗号等分割是可能的,但这对我没有帮助。
有没有办法将单元格划分为单元格中第一个数字的2列?
我已经查看了许多其他问题,但没有一个(或其他互联网论坛)帮助我将值拆分为第一个单元格值。
感谢#quantum285的答案。如果字符串包含一个数字,则此例程有效。我将teststring更改为firstpart323secondpart。 然后part1返回'firstpart32',part2返回secondpart。
我试图了解此代码中发生的情况,如果我错了,请纠正我:
首先,确定字符串的长度。
其次,检查此字符串中的每个位置是否为数字。但是从右到左这个检查是不是?因此,在 firstpart323secondpart:的情况下,长度为22
然后isnumeric()
检查1到22之间的每个位置(如果它是数字)并在找到数字时停止?
如果是这样,第1部分是值 i 之前的tekst,其中<em> i 是找到数字的字符串中从右到左的第一个位置。
然后和第2部分是从同一位置右侧的字符串。
但是,我正在寻找一个例程,从左到右(或从右到左的最后一个位置)找到第一个位置,其中有一个数字,...
所以我现在改变了例程,只需调整for i = 1 to
行:
Sub test()
For j = 4 To Cells(Rows.Count, 4).End(xlUp).Row
For i = Len(Cells(j, 4)) To 1 Step -1
If IsNumeric(Mid(Cells(j, 4), i, 1)) Then
Cells(j, 5) = Left(Cells(j, 4), i - 1)
Cells(j, 6) = (Right(Cells(j, 4), Len(Cells(j, 4)) - i + 1))
End If
Next i
Next j
End Sub
这几乎完美无缺(除了一些在数值上有多个数字组合的细胞(如:汤10g 20盒)。但由于这些只是少数,我可以手工调整。
谢谢!
答案 0 :(得分:4)
Sub test()
testString = "firstpart3secondpart"
For i = 1 To Len(testString)
If IsNumeric(Mid(testString, i, 1)) Then
part1 = Left(testString, i - 1)
part2 = (Right(testString, Len(testString) - i))
End If
Next i
MsgBox (part1)
MsgBox (part2)
End Sub
在你的循环中使用这样的东西。