零基础求助:基于数值列条件合并多行语句的VBA实现
零基础VBA实现:根据数值合并对应语句
先明确我们要做的事:根据Excel单元格里的数值,匹配对应的语句,最后把所有语句合并成逗号分隔的结果(比如处理3个数值后得到 Maintenance painting, To be rectified, Maintenance painting)。
第一步:打开VBA编辑器
打开你的Excel文件,按下快捷键 Alt + F11,直接进入写VBA代码的界面。
第二步:新建代码模块
在编辑器左边的「工程资源管理器」里,找到你的Excel文件名(比如Book1),右键点击它,选「插入」→「模块」,就能得到一个空白的代码编辑区。
第三步:写代码(附逐行大白话解释)
把下面的代码复制粘贴到空白模块里,每一行的作用我都用大白话讲清楚:
Sub 合并语句() ' 定义几个"容器":存合并后的结果、当前处理的行号、当前数值、当前语句 Dim 结果文本 As String Dim 行号 As Integer Dim 当前数值 As Integer Dim 当前语句 As String ' 先把结果容器清空 结果文本 = "" ' 遍历A列第1到第3行(如果你的数值在更多行,把3改成对应行数) For 行号 = 1 To 3 ' 把当前行A列的数值取出来 当前数值 = Cells(行号, 1).Value ' 根据数值匹配对应的语句:这里假设1对应Maintenance painting,2对应To be rectified Select Case 当前数值 Case 1 当前语句 = "Maintenance painting" Case 2 当前语句 = "To be rectified" ' 要是有其他数值对应其他语句,直接在这里加:比如Case 3: 当前语句 = "清洁" Case Else 当前语句 = "" ' 没匹配到的数值就留空 End Select ' 把当前语句加到结果里,避免多余逗号 If 当前语句 <> "" Then If 结果文本 <> "" Then ' 结果已有内容,先加逗号空格再加新语句 结果文本 = 结果文本 & ", " & 当前语句 Else ' 结果是空的,直接加第一个语句 结果文本 = 当前语句 End If End If Next 行号 ' 把合并好的结果放到C1单元格 Cells(1, 3).Value = 结果文本 ' 弹个提示告诉我们搞定了 MsgBox "合并完成!结果在C1单元格" End Sub
关键部分说明:
For 行号 = 1 To 3:就是让电脑一行一行处理A列的数值,比如改成To 10就是处理前10行。Select Case 当前数值:相当于给电脑做选择题,数值是1就选第一个语句,是2就选第二个,灵活添加新的匹配规则就行。Cells(行号, 列号):Cells(1,1)就是A1单元格,Cells(1,3)就是C1单元格,改数字就能切换不同列。
第四步:运行代码
光标放在代码里的任意位置,按下F5键,或者点工具栏上的绿色三角形「运行」按钮,等弹出提示框后回到Excel,就能看到合并好的结果了。
适配你的表格的小调整
- 如果数值列不是A列:比如是D列,就把
Cells(行号, 1)里的1改成4(A=1,B=2,C=3,D=4)。 - 如果要匹配更多语句:在
Select Case里加Case 数值: 当前语句 = "对应内容"就行。 - 如果结果要放到其他单元格:比如放到E5,就把
Cells(1, 3)改成Cells(5, 5)。
内容的提问来源于stack exchange,提问作者Helpmijr mihun
相关产品推荐
相关产品推荐

