Vba 如果相邻单元格符合条件,则复制单元格内容
我有一系列的矩阵,由7列和不同行数组成。我想要矩阵第2列中的公司名称如果第4列中的相应数据“CM”聚合到每个矩阵的一个单元格中(假设所有不同矩阵的B3:B98),不同名称之间有一个空格。有关矩阵的示例,请参见下图 最终结果是,如果G列中同一行的单元格为“CM”,则E列中的所有公司名称将聚合到B3中,下一个矩阵从B4中的M列开始,依此类推 在让if语句识别单元格内容中的“CM”或使用Join语句聚合结果方面,我没有成功。非常感谢您的帮助 编辑: 目标是将特定证券上的所有承销商聚集在一个单元格中,以便可以轻松地在表格的另一部分中搜索该单元格,以查找特定承销商的存在 正如您可能知道的,下面的代码不起作用。我撞到了墙上,因为我无法让它区分含有“CM”的细胞和不含有“CM”的细胞。(我知道下面的代码不会在任何单元格中聚合结果,只会将结果复制到B列中,正如我所说的,这是一项正在进行的工作,已经暂停。) 编辑:使用Urderboy的代码,我对其进行了修改,以下面的方式处理同一工作表上的多个矩阵。这个版本的技巧与他的不同,因为这个版本依赖于所有包含相同列数且不超过100行的矩阵Vba 如果相邻单元格符合条件,则复制单元格内容,vba,excel,Vba,Excel,我有一系列的矩阵,由7列和不同行数组成。我想要矩阵第2列中的公司名称如果第4列中的相应数据“CM”聚合到每个矩阵的一个单元格中(假设所有不同矩阵的B3:B98),不同名称之间有一个空格。有关矩阵的示例,请参见下图 最终结果是,如果G列中同一行的单元格为“CM”,则E列中的所有公司名称将聚合到B3中,下一个矩阵从B4中的M列开始,依此类推 在让if语句识别单元格内容中的“CM”或使用Join语句聚合结果方面,我没有成功。非常感谢您的帮助 编辑: 目标是将特定证券上的所有承销商聚集在一个单元格中,以
For i = 7 To 857 Step 9
For y = 3 To 100
If Cells(y, i) = "CM" Then
s = s & Cells(y, i).Offset(0, -1).Value & " "
End If
Next y
If s = "" Then
s = "Sole Lead"
End If
Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = Trim(s)
s = ""
Next i
将代码粘贴到
VBE
中的工作表5
(或任何要在其上运行此操作的工作表)
字符串s
,将在循环通过您的列检查“CM”匹配时自行生成
按原样,代码将在每个新添加的值之间添加逗号,例如,so和,so,然后在显示最后一个字符串之前删除最后一个逗号
Option Explicit
Sub TextCM()
Dim i As Long, s As String
For i = 3 To Range("G" & Rows.Count).End(xlUp).Row
If Range("G" & i) = "CM" Then
s = s & Range("E" & i).Value & ", " 'Remove & ", " if you do not want the comma + space
End If
Next i
Range("B2") = Left(s, Len(s) - 2) 'Change to Range("B2") = s to not delete last character in string
End Sub
您应该能够找出如何将其扩展到多个表(矩阵?)没有问题 将代码粘贴到
VBE
的工作表5
中(或您希望在其上运行此操作的任何工作表)
字符串s
,将在循环通过您的列检查“CM”匹配时自行生成
按原样,代码将在每个新添加的值之间添加逗号,例如,so和,so,然后在显示最后一个字符串之前删除最后一个逗号
Option Explicit
Sub TextCM()
Dim i As Long, s As String
For i = 3 To Range("G" & Rows.Count).End(xlUp).Row
If Range("G" & i) = "CM" Then
s = s & Range("E" & i).Value & ", " 'Remove & ", " if you do not want the comma + space
End If
Next i
Range("B2") = Left(s, Len(s) - 2) 'Change to Range("B2") = s to not delete last character in string
End Sub
您应该能够找出如何将其扩展到多个表(矩阵?)没有问题 使用示例数据查看最终结果照片(你想实现什么?)也会有所帮助。@Jeeped我已经添加了我为此而编译的代码,@Urderboy目标是将特定证券的所有承销商聚合到一个单元格中,这样就可以很容易地在表格的另一部分搜索单元格,以确定是否有特定的保险人在场。因此,单元格B3将所有公司都列在E列,从Academy Securities ANZ Securities BBVA Securities等开始。如果将
=LEN(G4)
放入一个未使用的单元格,您会得到什么?@Jeeped返回“2”看到最终结果照片(您试图实现什么?)使用您的示例数据也会有所帮助。@Jeeped我已经添加了我为此编译的代码,@urdearboy目标是将特定证券上的所有承销商聚合到一个单元格中,以便可以在表格的另一部分轻松搜索该单元格,以查找特定承销商的存在。因此,单元格B3将所有公司都列在E列,从Academy Securities ANZ Securities BBVA Securities等开始。如果将=LEN(G4)
放入一个未使用的单元格,会得到什么?@Jeeped返回“2”