如何在Excel VBA中拆分单元格内容并按%符号剪切到下方单元格
Excel VBA 单单元格按%拆分内容到下方行实现方案
原有代码问题说明
- 你使用的
Range.Find方法是用于在单元格区域中搜索匹配内容的单元格,无法定位单个单元格文本内部的%字符 - 参数
LookAt:=xlWhole要求单元格完整内容等于%才会命中,无法识别包含%的长文本单元格,因此原有代码无法实现需求
修复后可直接运行的代码
Sub 按百分号拆分单元格内容() Dim 当前处理单元格 As Range Dim 内容文本 As String Dim 百分号位置 As Integer ' 这里指定要处理的单元格,也可以替换为Set 当前处理单元格 = Selection,实现选中哪个单元格就处理哪个 Set 当前处理单元格 = Range("B12") Do 内容文本 = 当前处理单元格.Value ' 查找%的位置,这里如果需要跳过当前行开头的%可以把1改成2 百分号位置 = InStr(1, 内容文本, "%") If 百分号位置 = 0 Then Exit Do ' 如果下方单元格有内容不想被覆盖,可以取消注释下一行,自动插入空行 ' 当前处理单元格.Offset(1, 0).Insert Shift:=xlDown ' 将%及之后的内容剪切到下方单元格 当前处理单元格.Offset(1, 0).Value = Mid(内容文本, 百分号位置) ' 原有单元格保留%之前的内容 当前处理单元格.Value = Left(内容文本, 百分号位置 - 1) ' 偏移到下一行继续处理 Set 当前处理单元格 = 当前处理单元格.Offset(1, 0) Loop End Sub
功能说明
- 自动定位指定单元格内的所有
%符号 - 每找到一个
%,就将该符号及之后的全部内容移动到当前单元格正下方的行 - 循环执行直到所有单元格内都没有多余的
%需要处理 - 拆分后的内容顺序和原文本顺序完全一致
内容的提问来源于stack exchange,提问作者Danhadnagy
相关产品推荐
相关产品推荐

