如果相邻单元格符合条件,则复制单元格内容

时间:2018-07-16 21:55:33

标签: excel vba excel-vba

我有一系列矩阵,这些矩阵由7列组成,行数不同。我希望矩阵中的列2的公司名称为,如果,第4列中的相应数据是“ CM”,则每个矩阵汇总为一个单元格(对于所有不同的矩阵,请说B3:B98),不同名称之间的空格。请参见下图,以了解矩阵Sample Image

的示例

最终结果是,如果G列同一行上的单元格为“ CM”,则E列中的所有公司名称将在B3中汇总,下一个矩阵从B4的M列开始,依此类推。

在获取if语句以识别单元格内容中的“ CM”或使用Join语句汇总结果方面,我获得了零成功。非常感谢您的帮助。

编辑: 目的是将特定证券上的所有承销商汇总到一个单元格中,以便可以轻松地在工作表的另一部分中搜索该单元格中是否存在特定的承销商。

您可能会发现,下面的代码不起作用。我碰壁,因为我无法区分包含“ CM”的单元格和不包含“ CM”的单元格。 (我知道下面的代码不会将结果汇总到任何单元格中,只是将结果复制到B列中,正如我所说的,这是一个正在进行的工作,已经停滞了。)

Dim Ws5 As Worksheet:       Set Ws5 = Worksheets(5)

'turn off some Excel functionality so code runs faster
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

'Compiles the managers in the matrices into a column on the MgrMatrix sheet to be used
'for the entry sheet column of underwriters.
Dim CoL As Range:     Set CoL = Ws5.Range("D3:K104")
Dim CeL As Range

For Each CeL In CoL.Columns(4)
    If CeL.Text = "CM" Then
        CeL.Offset(0, -5) = "CM"
    Else
        CeL.Offset(0, -5) = CeL.Offset(0, -2).Value
    End If
Next

编辑:使用urdearboy的代码,我以以下方式修改了它以使其可用于同一张纸上的多个矩阵。这个版本没有他的技巧,因为这个版本依赖于包含相同列数且不超过100行的所有矩阵。

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

1 个答案:

答案 0 :(得分:2)

VBE内的Sheet 5中粘贴代码(或任何要在其上运行的工作表)。

字符串s将在遍历您的列并检查“ CM”匹配项时自行构建。

按原样,该代码将在每个新添加的值like, so, and, so,之间添加逗号,然后在显示最终字符串like, so, and, 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

您应该能够弄清楚如何将其扩展到多个表(矩阵?)没有问题。