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) 

并填写