エクセルVBAについて質問です。


「0」という名前のシートにはA列にだけ文字列が記入されています。
「9」という名前のシートにはA列とB列に文字列が記入されています。

「0」と「9」を比較して両者のA列のどこかに合致した文字列があった場合、
「9」のB列にある文字列を「0」のB列に記入するというマクロを作ってください。

(例)
「0」のA2に「ヤクルト」という文字列が、
「9」のA5に「ヤクルト」、B5に「スワローズ」という文字列があったとします。
「0」のB2に「スワローズ」と記入するということです。

以上、よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/11/13 12:55:12
  • 終了:2007/11/13 18:36:55

回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/11/13 13:38:07

ポイント50pt
Sub Macro()
    For i = 1 To Worksheets("0").Range("A65536").End(xlUp).Row
        For j = 1 To Worksheets("9").Range("A65536").End(xlUp).Row
            If Worksheets("0").Cells(i, 1).Value <> "" Then
                If Worksheets("0").Cells(i, 1).Value = Worksheets("9").Cells(j, 1).Value Then
                    Worksheets("0").Cells(i, 2).Value = Worksheets("9").Cells(j, 2).Value
                End If
            End If
        Next j
    Next i
End Sub
<|
id:taroemon

ご回答ありがとうございます。

うまくいきました。

2007/11/13 18:33:07
id:nyankochan No.2

nyankochan回答回数323ベストアンサー獲得回数92007/11/13 13:50:26

ポイント20pt

こんな感じでどうですか?

もっとシンプルなのがありそうですが。

Sub マッチ()

Dim word As Variant

Dim gyou0 As Integer

Dim gyou9 As Integer

gyou0 = 1

gyou9 = 1

Do While Cells(gyou0, 1) <> ""

word = Cells(gyou0, 1)

Do While Sheets("9").Cells(gyou9, 1) <> ""

If Sheets("9").Cells(gyou9, 1) = word Then

Cells(gyou0, 2) = Sheets("9").Cells(gyou9, 2)

Exit Do

End If

gyou9 = gyou9 + 1

Loop

gyou0 = gyou0 + 1

gyou9 = 1

Loop

End Sub

id:taroemon

ご回答ありがとうございます。

私の環境ですと「実行時エラー」が出てしまいます。

しかし大変参考になりました。

またご回答ください。

2007/11/13 18:35:27
  • id:nyankochan
    すいません、たぶんシート名の判定でエラー出ます。
    半角で設定してしまいました。
  • id:taroemon
    わざわざ丁寧なコメントありがとうございます。
    それくら僕がわからなければならないところですね。
    また質問しますのでご回答ください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません