質問: excelでマクロを使用した連続印刷について a2セルから通し番号、氏名、住所等のデータが入力されている「データ」シートがあり、 vlookupを使用してb3セルに「データ」シートのa列にある「通し番号」を 入力すると氏名・住所等が反映される「印刷」シートがあります。 例えば「データ」シートのc列(住所)に「東京都」という文字列が 含まれている宛名のみを連続で印刷したい場合、 どのようなマクロになりますでしょうか? (マクロ内に「東京都」と指定する方法と、 シート内の特定セルに入力した文字列で指定する方法が ありますでしょうか?) wordでの差し込み印刷や、宛名ソフト等の使用は考えておりません。 よろしくお願いいたします。
回答: 「データ」シートからキーワードに合うものを抽出して、一旦「集計シート」に集計し、それを印刷するというイメージでよければ。 (式でも集計できそうですが、マクロとのご質問なのでマクロの回答です。=集計シートに集計するマクロ) データシート名・・・検索用のセルまでの情報を適宜設定してください。 データシート名、集計用シート名はそれぞれのシート名。データの範囲はデータ1セット(1行)の範囲(下の例ではa2~f2の範囲)。 集計用シートの開始番号は転記を開始する最初の行番号(下例では2行目から)。 検索用セルは検索キーを指定する場合はそのセル(下例ではa1セル)を、指定しなければ("")入力用ダイアログで指定するようになっています。 sub test() dim dst as worksheet, key as string dim drg as range, irg as range dim i as long, r as long, r0 as long const d_name = "データ" '// データシート名 const i_name = "集計" '// 集計用シート名 const data_range = "a2:f2" '// データの範囲(1行分を例に指定) const i_start = 2 '// 集計用シートの表示開始行番号 const keycell = "a1" '// 検索用のセル(集計用シート)又はダイアログ set dst = worksheets(d_name) set drg = dst.range(data_range) if keycell = "" then key = inputbox("検索キーを入力してください。") if key = "" then exit sub else set irg = worksheets(i_name).range(keycell) key = irg.value end if worksheets(i_name).cells.clearcontents if keycell <> "" then irg.value = key set irg = worksheets(i_name).range(data_range) r0 = drg.row r = i_start key = "*" & key & "*" for i = r0 to dst.cells(dst.rows.count, 3).end(xlup).row if dst.cells(i, 3).value like key then irg.offset(r - r0, 0).value = drg.offset(i - r0, 0).value r = r + 1 end if next i end sub