2

我需要在第 1 行(a1 到 dv1)中的每个单元格中搜索“doc1”在该行的后续单元格中后跟“doc2”的实例。然后我需要将包含“doc1”的单元格下方的单元格中的内容与包含“doc2”的单元格下方的单元格中的内容连接起来,用逗号分隔,并替换单元格中的文本在包含“doc1”的单元格下方。

因此,例如,如果 a1 有“doc1”,b1 有“doc2”,a2 有“7”,b2 有“8”,那么我需要将 a2 替换为“7, 8”。

任何帮助将不胜感激。

谢谢,艾米

4

1 回答 1

2

这是 VBA 中的一个解决方案 - 您可以将其复制并粘贴到 VBA 的新模块中(首先备份您的电子表格),然后运行它(使用 F5)。要快速进入 VBA,请使用 alt-F11。我在代码中留下了我的 MSGBOX 语句被注释掉了。此外,代码一直运行到 DW1,因此它可以完成 DV1。

Option Explicit

Sub Doc1_Doc2_Merge()

    Dim CurrCol As Integer
    Dim CurrRow As Integer
    Dim NewValue As String
    Dim EndCol As String

    For CurrRow = 1 To 50 Step 2 '(assume 50 rows - skip 2 lines each time)
       CurrCol = 1

       EndCol = "$DW$" & Trim(Str(CurrRow))
       While Cells(CurrRow, CurrCol).Address <> EndCol

           'MsgBox Cells(CurrRow, CurrCol).Address & " " & Cells(CurrRow, CurrCol).Value

           If InStr(Cells(CurrRow, CurrCol).Value, "doc1") > 0 Then
               ' look at next cell
               If InStr(Cells(CurrRow, CurrCol + 1).Value, "doc2") > 0 Then
                   If Trim(Cells(CurrRow + 1, CurrCol + 1).Value) <> "" Then
                       NewValue = Cells(CurrRow + 1, CurrCol).Value & "," & Cells(CurrRow + 1, CurrCol + 1)
                       'MsgBox "New Value is " & NewValue
                       Cells(CurrRow + 1, CurrCol).Value = NewValue
                   End If
               End If

           End If

           CurrCol = CurrCol + 1
       Wend
    Next CurrRow

End Sub

以下是测试结果: 在此处输入图像描述

于 2013-02-25T22:22:59.300 回答