Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel单元格解析_Vba_Excel_Excel Formula_Excel 2010 - Fatal编程技术网

Vba Excel单元格解析

Vba Excel单元格解析,vba,excel,excel-formula,excel-2010,Vba,Excel,Excel Formula,Excel 2010,我有两列,每列大约有4000个数据单元。我需要以类似的方式格式化每个列 第1栏: 场景1:每个单元格都有以“qwe”开头的数据。如果“qwe”后面有一个“bc”,我需要删掉所有5个字符 场景2:每个单元格都有以“qwe”开头的数据。如果“qwe”后面没有“bc”,我只需要删除数据字符串的前3个字符(“qwe”)和最后一个字符。(这将是数据字符串长度的最后一个字符) 第2栏: 场景:我需要删掉每个单元格中每个字符串的前三个字符 对于第一列,我完全不知道如何检查第4个和第5个字符是否为“bc”,然后

我有两列,每列大约有4000个数据单元。我需要以类似的方式格式化每个列

第1栏: 场景1:每个单元格都有以“qwe”开头的数据。如果“qwe”后面有一个“bc”,我需要删掉所有5个字符

场景2:每个单元格都有以“qwe”开头的数据。如果“qwe”后面没有“bc”,我只需要删除数据字符串的前3个字符(“qwe”)和最后一个字符。(这将是数据字符串长度的最后一个字符)

第2栏: 场景:我需要删掉每个单元格中每个字符串的前三个字符

对于第一列,我完全不知道如何检查第4个和第5个字符是否为“bc”,然后转移到相应的操作中

对于第二列,我只想调用MID(单元格,3,当前单元格中字符串的长度)。但是,我不知道如何从函数中调用单元格中数据的长度


感谢所有的帮助。我对VB宏一无所知,而且(显然)我只对Excel函数了解一点。

假设Column1是a,Column2是B,请尝试:

=IF(AND(LEFT(A1,3)="qwe",MID(A1,4,2)="bc"),RIGHT(A1,3),RIGHT(A1,LEN(A1)-3))  


复制下来以适应。

假设您真的想使用VBA来完成此操作,而不是像pnuts这样的电子表格功能,建议:

可以使用VBA中的Application.WorksheetFunction调用工作表函数;然而,我不认为简单的字符串函数可以从那里获得;通常,您会发现跨行和跨列工作的更复杂的函数

尽管如此,BASIC还是有很多很好的字符串函数,如果您将单元格的值作为字符串获取,则可以直接使用这些函数进行字符串操作。这里有一个简单的例子

Set cell = ActiveSheet.Range("B2")
Dim val As String
Let val = cell.Value
Let part = Mid(val, 4, 2)
然后,如果愿意,可以将单元格值写回:

Let cell.Value = part

如果给定的长度参数比字符串长,MID函数将只返回字符串的余额。所以对于一些函数,只需要在那里放一个大数字,而不是计算它就可以了。我用了99,但是如果你的一些字符串更大,就把这个数字设置得足够大

对于第1列:

C1: =IF(LEFT(A1,5)="qwebc",MID(A1,6,99),MID(A1,4,LEN(A1)-4))
第2栏:

D1: =MID(B1,4,99)
填上

D1: =MID(B1,4,99)