【发布时间】:2017-03-04 20:28:04
【问题描述】:
我想遍历一列并在每个单元格中提取一个子字符串(在我的示例中为“代码:”)
我想遍历每个单元格并在适当的位置运行公式。基本上删除列的每个单元格中的所有内容,除了代码。
我知道如何使用以下公式将字符串提取到另一列 B 中: =MID(A2,FIND("代码:",A2,1),23)
...但我想在同一个单元格中执行此操作。我在 vba 中尝试了此代码,但不知道我做错了什么:
For Each cell In Range("A:A")
cell.Value = Mid(.Value, InStr(1, .Value, "Code:"), 23)
Next
【问题讨论】:
-
为什么是 23 个字符而不是 14 ??
-
除非您在
for循环之外使用With块,否则一个可能的问题是您的.Value引用没有到达您认为它们要去的地方。试试cell.Value = Mid(cell.Value, InStr(1, cell.Value, "Code:"), 23) -
A 列的 EVERY 单元格中是否存在“代码:”?
Instr将返回 0 如果它不存在(我不敢相信你真的有 1048576 个单元格,其中包含字符串“代码:”)并且从字符位置 0 开始的Mid将失败。 (加上 PeterT 所说的!) -
啊,我明白了! A100 左右之后没有空白单元格.. 如何仅在非空白单元格上运行此公式?
-
我把它改成了“cell.value”,还是不行。 mybe InStr 返回 0 是问题...