Excel单元格parsing
我有两列大约4,000个数据单元。 我需要以类似的方式格式化每一列。
第1列:Scenerio 1:每个单元格都有以“qwe”开头的数据。 如果在“qwe”之后有一个“bc”,我需要删除全部5个字符。
Scenerio 2:每个单元格都有以“qwe”开头的数据。 如果在“qwe”之后没有“bc”,我只需要删除前3个字符(“qwe”)和数据string的最后一个字符。 (这将是数据string长度的最后一个字符)
第2栏:Scenerio:我需要修剪每个单元格中每个string的前三个字符。
对于第一列,我绝对不知道如何检查第4个和第5个字符是否是“bc”,然后转入相应的操作。
对于第二列,我只是打电话给MID(CELL,3,LENGTH_OF_STRING_IN_CURRENT_CELL)。 但是,我不知道如何调用函数内的单元格中的数据的长度。
所有的帮助表示赞赏。 我不知道任何有关VBmacros,我只知道一点关于Excel函数。
假设Column1是A,Column2是B,请尝试:
=IF(AND(LEFT(A1,3)="qwe",MID(A1,4,2)="bc"),RIGHT(A1,3),RIGHT(A1,LEN(A1)-3))
和
=MID(B1,4,LEN(B1)-3)
复制下来以适应。
假设你真的想用VBA来代替像pnuts这样的电子表格函数:
您可以使用VBA中的Application.WorksheetFunction调用工作表函数; 不过,我不认为简单的string函数可以从那里得到; 通常你会发现跨越行和列的更复杂的函数。
尽pipe如此,BASIC还是有很多不错的string函数,如果以string的forms获取单元格的值,则可以直接使用这些函数进行string操作。 这是一个简单的例子。
Set cell = ActiveSheet.Range("B2") Dim val As String Let val = cell.Value Let part = Mid(val, 4, 2)
然后,如果你喜欢,你可以写回单元格值:
Let cell.Value = part
MID函数,如果给定的长度参数比string长,将只返回string的平衡。 所以对于一些function来说,只需要在那里input一个大数字就行了,而不是计算它。 我用了99,但是如果你的一些string比较大,就把这个数字设置得足够大。
对于第1栏:
C1: =IF(LEFT(A1,5)="qwebc",MID(A1,6,99),MID(A1,4,LEN(A1)-4))
对于第2栏:
D1: =MID(B1,4,99)
并填写