ここから本文です

VBAの質問になります。

rag********さん

2020/1/2417:24:18

VBAの質問になります。

★実現したい事
・A列にある取引先コードが同じなら、行毎にコピーしていき違う行が表れたら予め作成しておいた別シートにコピーし、そのシート内のワードから名前を付けて保存していきたいのです。

今回質問したのは、シートを選択する処理についてです。

i=1(現在の列)
j=2(一つ下の列)

ws=現在のシート

If ws.Cells(i, "A") = ws.Cells(j, "A") Then
'一致した場合の処理
ws.Range(Rows(i), Rows(j)).Copy
Sheets("test").Rows(2).PasteSpecial (xlPasteAll)
Else
'一致しない時の処理
End If

これだと、1回の処理で終了してしまうのですが、これを別の値が出るまで回すには
どのようにすればよいのでしょうか?

閲覧数:
29
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2020/1/2606:23:20

iとjは列でなく行の事だと思いますが、その場合です。
こんな事をしたいのでしょうか。


Sub sample()
Dim ws As Worksheet
Dim i As Long
Dim j As Long
Dim r As Long
Dim lastRow As Long

Set ws = ActiveSheet ' 現在のシート
r = 1 '結果表示行の初期値
i = 1 '現在の比較元行
lastRow = Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行
For j = 2 To lastRow '注目行を2行目からA列最終行まで
If ws.Cells(i, "A") = ws.Cells(j, "A") Then 'A列の比較元行の値と注目行の値が同じなら
'一致した場合の処理
ws.Rows(j).Copy Sheets("test").Rows(r) '注目行を"test"シートの結果表示行にコピー
r = r + 1 '結果表示行+1
End If
Next
End Sub

  • 質問者

    rag********さん

    2020/1/2709:51:53

    すみません、回答を頂きながら返信の方遅れました。
    iとjは行の事です、誤記申し訳ありません。

    実際行いたい事は、多数の項目があるExcelファイルをA列の取引先コード毎に新しいシートを作り、そのシートの取引先名を基にCSVファイルを保存していくといったカタチです。

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2020/1/28 12:10:15

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

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる