VBA Excel 实现单元格内多行内容的文字处理方法

在Excel中有很多的函数可以作用于单元格,但是其对单元格整体进行操作,因此单元格数据最好只有一行,这样Excel函数才能运行正确。但是有时候一个单元格内多行字符串的处理,Excel并没有很好地进行支持。因此对于单元格中的多行文字的处理,我来提供一种简单的代码解决方案,其中最核心的就是单元格内的多行遍历。
而我写这篇博客的原因就是这方面的需求还没有人写过类似的博客,但是该类型的需求有时还比较多,如果有什么问题欢迎进行讨论。但是,VBA确实不是一门非常友好的语言,它的优势仅仅在于和Excel的良好的兼容性。如果不考虑这些,Python欢迎你哦!


文章目录

  • VBA Excel 实现单元格内多行内容的文字处理方法
  • 多行遍历判定方法
  • 一些简单VBA功能
    • 删除带删除线的文本
    • 判断字符串是否以某个指定字符串结束
    • 过滤仅留下每行字符串中以.c和.htm为结尾的字符串(以..结尾可以更换)
    • 将两列单元格内数据进行合并,左列只保留.htm和.c结尾的单元格内的行,并将两列中带有删除线的文本删除,并在指定单元格下将数据写入。

多行遍历判定方法

当单元格含有多行数据,那么换行符一定存在于行之间,因此寻找换行符便可以分开每一行。
下面的Demo实现了将Sheet1 中的 Cells(1,1) 中的多行元素分割开来,并存储到arr中。其中Chr(10)便指的是换行符,也就是Excel中的alt+enter。

Sub Demo()Set a = Sheets("Sheet1").Cells(1, 1)            '设置a的值Dim temp, letter As String                       '设置一些中间变量Dim arr(50) As String                         '设置最终的结果变量arrDim j As Integer                              '设置一个标记j = 1                                          For i = 1 To Len(str)temp = temp & Mid(a, i, 1)letter = Mid(a, i, 1)If letter = Chr(10) Or i = Len(str) Then   '判断字符是否是换行符或者判断该单元格是否结束arr(j) = temptemp = ""j = j + 1End IfNext i
End Sub

一些简单VBA功能

删除带删除线的文本

Function del_text(x As Range)   'This function can delete specific text with strikethrough from specific cellDim c, dDim temp As StringDim str As StringFor Each rng In xc = rng.Characters.Countd = 1str = ""Do Until d > cIf Cells(rng.Row, rng.Column).Characters(Start:=d, Length:=1).Font.Strikethrough = False Then    '判断该字符是否被添加删除线str = str & Mid(rng, d, 1)End Ifd = d + 1Looprng.Value = strNext
End Function

判断字符串是否以某个指定字符串结束

该函数的两个参数分别为 x 需要判断的字符串, match是判断的字符串。 其功能是判断x字符串是否以match结束

Function Endwith(x As String, match As String)  'This function is used to verify if String x is end with String matchIf x Like match ThenEndwith = TrueElseEndwith = FalseEnd If
End Function

过滤仅留下每行字符串中以.c和.htm为结尾的字符串(以…结尾可以更换)

Function filter(x As Range)  'This function is used to filter .c and .htm file for each lineDim temp As StringDim str, a As Stringstr = ""For Each rng In xa = Cells(rng.Row, rng.Column).ValueFor i = 1 To Len(a)letter = Mid(a, i, 1)If letter = Chr(10) Or i = Len(a) ThenIf i = Len(a) Thentemp = temp & letterIf (Endwith(temp, "*.htm")) Or (Endwith(temp, "*.c")) Thenstr = str & tempEnd IfElseIf (Endwith(temp, "*.htm")) Or (Endwith(temp, "*.c")) Thenstr = str & tempEnd Iftemp = temp & lettertemp = ""End IfEnd If temp = temp & letterNext iNextfilter = str
End Function

将两列单元格内数据进行合并,左列只保留.htm和.c结尾的单元格内的行,并将两列中带有删除线的文本删除,并在指定单元格下将数据写入。

具体实现的效果如下图所示。

Sub Merge_multiple(x As Range, y As Range)                   'This function is to filter some infomations indicated and put them together, And put them in the same position of the cell chosenDim wb As ObjectDim st As ObjectDim xx, yy As RangeDim xstr, ystr As StringDim rr As IntegerDim sel As RangeDim row_num As Integerrow_num = Selection.Rowcol_num = Selection.Columnrr = x.rows.CountIf x.rows.Count <> y.rows.Count ThenMsgBox "The variables you enter don't have the same column"End IfFor i = 1 To rrCall del_text(x.rows(i))Call del_text(y.rows(i))ystr = y.rows(i)xstr = filter(x.rows(i))xstr = ystr & xstrCells(row_num + i - 1, col_num).Value = xstrxstr = ""ystr = ""Next iEnd Sub

VBA Excel 单元格内多行内容的文字处理方法相关推荐

  1. VBA 单一单元格的多行内容拆分为多行

    多行拆分需求 假如一个单元格包含多行信息,比如说一些唯一的ID信息,我需要将该列的这些多行信息进行拆分,将其拆分为多行,其余列信息进行复制.例如如下图所示的示例. 可以看到,该Excel表格的A列每一 ...

  2. excel单元格内的行数统计

    在需要显示行数的但愿格内输入表达式: =LEN(S2)-LEN(SUBSTITUTE(S2,CHAR(10),""))+1

  3. 如何将Excel单元格内逗号分隔的内容放到多个列

    //用而Excel转json工具先做数据转换,将Excel转成json//所在地区为逗号分隔的字符串,需要拆分成省市区放在Excel中var arr=[{"门店编码":" ...

  4. EXCEL 单元格内换行内容改成两行单元格内容

    EXCEL 单元格内换行内容改成两行单元格内容 需求: 绿色框框内C1 的内容 更换为C2和C3的两行单元格 C2 行内容=LEFT(C1,FIND(CHAR(10),C1)-1) C3 行内容=MI ...

  5. excel同一个单元格内多行数据拆分成多个单元格多行排列

    excel同一个单元格内多行数据拆分成多个单元格多行排列 1.全选表格 2.工具栏选择数据 ->来自表格/区域 3.选择要拆分的列,并点击拆分列 4.上载 1.全选表格 2.工具栏选择数据 -& ...

  6. Excel如何把一列单元格内多行数据合并为一行

    今天跟大家分享一下Excel如何把一列单元格内多行数据合并为一行 1.打开Excel文件,如下图我们想要将这每列数据合并到一个单元格中. 2.首先我们选中数据单元格区域 3.然后点击下图选项(Exce ...

  7. matlab中设置数据长度,excel表格长宽设置/如何检查excel单元格内数字长度

    EXCEL用函数提取不同字符串长度的特定数据? 直接输入公式"=left(right(a1,6),2)" 关于此公式中用到的"Left"和"right ...

  8. 为何excel中数据无法计算机,excel表格内数据为何无法计算机-为什么EXCEL单元格内的数字不能运算...

    我的电脑为什么不能把一个excel表中数据导入另一个... 在Excel中打不上去可能是由于数出了位数限制,对应及解决方下: 1.系统默认单元格中输入数字格式为"常规",能完全显示 ...

  9. VBA查找单元格内指定文字并标红加粗

    VBA查找单元格内指定文字并标红加粗 功能: 选中想要查找的单元格,在函数内点击运行,实现将指定的文字标红加粗的功能 bug: 指定文字会区分大小写,如何让它不区分大小写? 改进 将是否加粗,和标记的 ...

最新文章

  1. Git的使用和提交规范
  2. 【PC工具】200412更新百度网盘下载工具——最终最简单百度网盘下载方法及注意事项...
  3. iOS开发 蓝牙技术4.0详解
  4. android富文本文件存储,Android富文本
  5. 【旧文章搬运】从XP到Win7看Windows对象管理的变化(概述)
  6. c 易语言置入代码6,易语言置入代码动态版
  7. 联想换机助手_三星s换机助手下载-三星S换机助手 安卓版v3.6.07.11-PC6安卓网
  8. tableau地图城市数据_Tableau-地图
  9. 大批制造企业总部离沪 三四线城市成避风港
  10. html的px和屏幕什么关系,Html字体大小的设置单位PT与PX区别
  11. day64 url用法以及django的路由系统
  12. python 实现雪容融
  13. matlab向excel连续写数据,每次换行
  14. 基于QT+Halcon实现拟合圆形
  15. 桂林电子科技大学计算机学院老师,李凤英_桂林电子科技大学研究生导师信息...
  16. 如何零成本实现微信公众号自助查券返利机器人(五)
  17. APP运营推广那点事
  18. Python爬虫--爬取厦大电费
  19. python函数第六关
  20. CSS核心内容:标准流、盒子模型、浮动、定位

热门文章

  1. 探地雷达(GPR)检测地下钢筋,并可视化钢筋
  2. 西门子rwd60参数设置调试手册_西门子rwd60控制器说明书.pdf
  3. [UI]关于Android手机Ui设计
  4. SimplePing的使用
  5. 计算机语言CAD是什么意思,CAD是什么意思|CAD是什么软件
  6. 聚焦“数据价值”,网易有数定义行业新风向
  7. 安卓使用腾讯tbs查看pdf/word文件(解决x5内核下载问题)
  8. 初访逻辑门电路的世界
  9. 跨境电商之ebay产品上传(单属性、多属性)
  10. 组图:腰缠万贯 看看中国历史上二十大富豪