2

行 1 (a1 から dv1) のすべてのセルを検索して、その行の後続のセルで "doc1" の後に "doc2" が続くインスタンスを検索する必要があります。次に、「doc1」を含むセルの 1 行下のセルの内容と、「doc2」を含むセルの 1 行下のセルの内容をコンマで区切って連結し、セル内のテキストを置き換える必要があります。 「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 に答える