Excel:如果单元格A匹配单元格B,则将文本添加到单元格C

时间:2015-08-08 02:14:20

标签: excel excel-vba excel-formula vba

IF Cell Sheet1!A1匹配Cell Sheet2中的值!B1,然后添加字符串 “,数量:”& Sheet2!D1 在Cell Sheet1中的现有值的末尾!C1

例如:

第1页 - 原始

.a

第2页 - 原始

.a

工作表1 - 宏观之后

Col A   Col B   Col C
 123            Blue
 444            Large
 758            Pink

这种类型的交叉表公式是否可行?我搜索了网站,但没有找到我正在尝试编码的场景。我在同一张表格中做了类似的事情并且使用了一个空的Cell C,但是从来没有这样......

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

<强>宏

根据您的要求,这很可能是宏,但在这种情况下,如果您只想显示这些值,则根本不需要宏。如果您确实需要更改原始内容,则需要一个宏。但是,使用常规Excel公式和函数可以很容易地解决这个问题。

<强>式 如果您需要在与其他值连接的单元格中显示值,则可以使用CONCATENATE函数,也可以使用&运算符。

实施例

=CONCATENATE(C3,",",A3)

在Excel中您可以使用单元格的任何地方,您也可以使用完整的引用,包括工作表名称。像这样

=CONCATENATE(Sheet2!C3,",",Sheet1!A3)

如果您更喜欢使用&运算符,则可以执行上一个示例:

=Sheet2!C3 & "," & Sheet1!A3

您始终可以隐藏原始列,并仅使用旁边列中的公式显示连接版本。

<强>改进 我建议您研究使用 Tables 而不是 Ranges 。只需点击插入&gt;菜单中的表,您将拥有一个包含额外功能的表。

答案 1 :(得分:0)

在这里,我的纯vba方法解决您的问题:

Public Sub getQuantity()

    Dim sh1, sh2 As Worksheet
    Dim startRow As Integer
    Dim foundCell As Range

    'Set sheets
    Set sh1 = Sheets("Sheet1")
    Set sh2 = Sheets("Sheet2")

    'set the start row for Sheet1
    startRow = 1

    'loop until column A of Sheet1 is blank
    Do While sh1.Range("A" & startRow) <> ""

        'search id of column A from column B of Sheet2
        Set foundCell = sh2.Range("B:B").Find(sh1.Range("A" & startRow), LookIn:=xlValues)

        'If match id is found, add quantity in column C of Sheet1.
        If Not foundCell Is Nothing Then

            sh1.Range("C" & startRow) = sh1.Range("C" & startRow) & ", quantity:" & foundCell.Offset(0, 2).Value

        End If

        'increase row
        startRow = startRow + 1

    Loop

End Sub