我需要在第 1 行(a1 到 dv1)中的每个单元格中搜索“doc1”在该行的后续单元格中后跟“doc2”的实例。然后我需要将包含“doc1”的单元格下方的单元格中的内容与包含“doc2”的单元格下方的单元格中的内容连接起来,用逗号分隔,并替换单元格中的文本在包含“doc1”的单元格下方。
因此,例如,如果 a1 有“doc1”,b1 有“doc2”,a2 有“7”,b2 有“8”,那么我需要将 a2 替换为“7, 8”。
任何帮助将不胜感激。
谢谢,艾米
我需要在第 1 行(a1 到 dv1)中的每个单元格中搜索“doc1”在该行的后续单元格中后跟“doc2”的实例。然后我需要将包含“doc1”的单元格下方的单元格中的内容与包含“doc2”的单元格下方的单元格中的内容连接起来,用逗号分隔,并替换单元格中的文本在包含“doc1”的单元格下方。
因此,例如,如果 a1 有“doc1”,b1 有“doc2”,a2 有“7”,b2 有“8”,那么我需要将 a2 替换为“7, 8”。
任何帮助将不胜感激。
谢谢,艾米
这是 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
以下是测试结果: