エクセルマクロでリストのデータを印刷する方法

このQ&Aのポイント
  • エクセルマクロを使用して、指定のリストのデータを印刷する方法について教えてください。
  • 表のデータをA4用紙に横書きで印刷する方法をマクロで実現したいです。
  • マクロを使用して、組ごとに改行しながらデータを印刷する方法を教えてください。
回答を見る
  • ベストアンサー

エクセルマクロ リストのデータを印刷するには?

    A       B    1   1組    金山君        左のような表があり、これをA4用紙に横書きで 2   1組    斎藤君 3   1組    山口さん            金山君   斎藤君   山口さん 4   1組    三谷君             三谷君 5   2組    野村さん 6   2組    星野君             野村さん  星野君 7   5組    川上君                             川上君                        のように、1行に各人数はあらかじめ決めておき、(この例では3                        名)、そして、「組」が変わるごとに1行あけてその行の先頭から書き始                      めるというマクロはどのように記述すればいいでしょうか。  よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こういう表をマクロで出すのが得意な人はいらっしゃると思います。 私は、あくまでも、長いブランクの練習用として書かせて頂きました。 本来は、ピボットテーブルなどで出せるような気がします。 >1行に各人数はあらかじめ決めておき、(この例では3名) それはいいにしても、金山くんという文字が、なぜ、3行目から始まるのか分からないけれど、文章に内容からすると、左の表と、右側の書き出しとは、何も連動していないようですね。 '// Sub Test1()  Dim r As Range  Dim r2 As Range  Dim c As Range  Dim objDic As Object  Dim a As Variant  Dim b As Variant  Dim d As Variant  Dim i As Long, j As Long, k As Long  Dim x As Long, y As Long, cnt As Long  Const ST As String = "D1" '書き出し位置(スタート=ST)  Const KT As Long = 3 '一行の横の書き出しセル数(略称は桁=KT)    'Dictionary オブジェクトを使う  Set objDic = CreateObject("Scripting.Dictionary")  Set r = Range("A1", Cells(Rows.Count, 1).End(xlUp))  If r.Count < 2 Then Exit Sub 'データがない場合  Application.ScreenUpdating = False  For Each c In r   If c.Value <> "" Then    If Not objDic.Exists(c.Value) Then     objDic.Add c.Value, c.Offset(, 1).Value    Else     objDic.Item(c.Value) = objDic.Item(c.Value) & "," & c.Offset(, 1).Value    End If   End If  Next c  a = objDic.Items  b = objDic.Keys  j = objDic.Count  Set r2 = Range(ST)  Do   d = Split(a(k), ",")   '書き出し   Do    For x = 0 To KT - 1 '横に書き出しセル     r2.Offset(y, x).Value = d(cnt)     cnt = cnt + 1     If UBound(d) = cnt - 1 Then Exit Do    Next x    y = y + 1   Loop   If UBound(a) = k Then Exit Do   k = k + 1   y = y + 2   cnt = 0  Loop  Application.ScreenUpdating = True  Set objDic = Nothing  Set r = Nothing End Sub '//

tarokawa20
質問者

お礼

ありがとうございました。

関連するQ&A

  • excelのマクロで条件による行の挿入

    列AとBがあり列Aに学校のクラス名A組、B組、C組・・・(20クラスほど)と氏名が 入るエクセルシートがあるのですが 先頭行はA組から始まり5行区切りで数え、(A組も5行のうちに入る) その5行内に次のB組が入らないように空白行を挿入したいです もし、5行以内にB組がない場合、次の5行でまたB組があるか判定しなければ氏名5つ あれば空白をいれてというのを20クラスぶん作るマクロは可能でしょうか? VBAの知識がさっぱりないので途方にくれています。 元のデータの例   マクロ実行後 列A   列B      列A   列B A組           A組   氏名1 111      氏名1 111  氏名2 222      氏名2 222 B組           空白行挿入 氏名3 333      空白行挿入 氏名4 444      B組 氏名5 555      氏名3 333 氏名6 666      氏名4 444 氏名7 777      氏名5 555 C組 氏名6 666              氏名7 777              空白行挿入              空白行挿入              空白行挿入              空白行挿入              C組  

  • マクロで改ページごとに印刷タイトルを移動

    ①改ページプレビューを見ていくと最終ページまで各ページ148行分の表みたいなものがありその先頭1行目から4行目に4行一組の見出しタイトルとしたものが必ず入っていくようにするのですが、そのタイトル4行一組は行間隔が途中不規則に出現しますので、その際に148行目と149行目の改ページ境界線をタイトルがまたいでしまう場合があります。 次の②~⑤のパターンがそうですが この時は強制的に次のページの先頭行に4行一組ごと強制移動していって送った分の行は空白のままになります。(基準148行から1行~4行分少ないページも出来るわけです) ⑥はページ内にタイトル4行が2種類以上~有る場合は最も下部のタイトル4行ごと次ページの先頭行にも同じものをコピペしていって行ってください そこで4行一組の切り替わり基準の見分け方なのですがA列において一番上の行が「○○年」と「前〇〇〇」〇=は数字4桁までで一番下の行が「生」という一文字が入っています 色帯は適当に選択してしまったので色番号が不明ですが大まかな色は上からグレー→黄色→黄緑→青の順です 図の一番下に参考があります 質問内容が意味不明でしたら諦めます 手作業の繰り返しでやると19万行以上1278ページあり大変です 下方に行数がどんどんスライドしていく分、さらに増えていきます

  • MS WORDのレイアウト設定方法

    どうぞよろしくお願いいたします。 ワード2010で、ミニ新聞を作ります。希望するレイアウトの設定方法を教えて下さい。自分で調べましたが分かりませんでした。 (希望するレイアウト) 用紙は縦置き、日本語の横書きです。 先頭ページの上部10センチほどは、普通の横書きにしたいのです。 この次の設定が分かりません。上部10センチほどとは違って、それより下は、左右の二段組みにしたいのです。 用紙上部には通して大活字で、新聞のタイトル。その下は、左右二段組でポイントを落とした新聞本文、ということです。 お願いいたします。

  • Excelで配列数式を使わずにとびとびの集計をしたいのですが

     ご覧いただきありがとうございます。Excelで、下記のような条件で集計を行いたいと思っています。配列数式を使う方法は考えついたのですが、できれば配列数式を使わず、作業セルもマクロも使わずに普通の関数式で集計したいのです。どなたかおわかりになる方がいらっしゃいましたら、よろしくご教示をお願いいたします。 (条件)  ○4行一組のデータのそれぞれ1行目の数値を足し合わせる。  ○ただし、各組の1行目が空欄の場合は2行目の数値を使う。3行目・4行目は関係なし。  ○データの先頭はA4で、データ数は一定していない。 (考えついた式) {=SUM(IF(MOD(ROW(A4:INDIRECT("A"&ROW()-4)),4)=0,IF(A4:INDIRECT("A"&ROW()-4)>0,A4:INDIRECT("A"&ROW()-4),OFFSET(A4:INDIRECT("A"&ROW()-4),1,0))))}  よろしくお願いいたします。

  • A4用紙に内容証明のフォーマットを作成したいのですがどなたか方法を教え

    A4用紙に内容証明のフォーマットを作成したいのですがどなたか方法を教えてください。 サイズ:A4 用紙位置:タテ 文字:横書き 一行:20文字 26行

  • 2段組み文書

    ワード2007横書き、2段組み文書で、1ページ目左側が終わったら次の文字は2ページ目の左側の先頭に来るようにし、同様に1ページ目の右側が終わったら次は2ページ目の右側の先頭に来るようにしたい。つまり2段組みで左側にはAに関する文章を、右側にはBに関する文章を各ページにわたり書きたいのです。 いいかえれば、2段組みの文書でページが変わっても左側は左に、右側は右に連続するようにするにはどうしたらいいでしょうか。

  • A-one の名刺郎 ソフトの印刷方法

    初心者ですので よろしくお願いします。 A-one の名刺郎 VER.2 というソフトを使い 入力しました。その後 横書き 2列の縦に4行 のレイアウトでA4用紙にテストで印刷しようとしましたが 左半分に2列4行に印刷できる大きさで全部で10枚分の名刺が印刷されました。  希望の印刷をしようとしたらどのようにしたらいいですか? プリンターは キャノン850Iです。PCは WINDOWSXPです。 よろしくお願いします。

  • ワードの書式で

    ワードの書式で A4、横書き、2段組、23文字×43行、余白ALL20mm、文字10.5MS 明朝 との指定があります。 一般的にこの場合、23文字というのは一段が23文字なのでしょうか、 それとも23文字を設定してから2段組を指定するのでしょうか (後者の場合は1段が10文字になりました) 初歩的な質問で申し訳ありませんが宜しくお願い致します。

  • 一太郎で、縦組、横割りで上下別の文書としたい。

    一太郎のユーザーです。 縦書き二段組みの文書で、上下の文書を別の物として作成、編集したいと思っています。  文書スタイルで『文字設定』(文字組)縦組 『用紙設定』(用紙)A4単票・縦方向 (袋とじ)横割り  と設定し編集を行いますと、上段がページ末へ行くと下段の先頭へカーソルは移動します。  これを、上段ページ末から次ページ先頭へ進むように出来ないものかと思っています。 目的は、上段の文書の解説を下段に作りたいと思っているからです。 インストールしているエディタおよびワープロとしては、一太郎のほかにワードおよびテラパッドが有るので、ワードなら出来るよというご回答でもありがたくちょうだいいたします。 よろしくお願いします。

  • 列、行タイトルを逆にしたいのですが

    こんにちは、現在、受験対策で世界史と日本史が兼用の年表を作成しております。もうほとんど完成というところで気がつけば、A4サイズでかなり長くなってしまいました。A列に時代(縄文~平成)B列に年号,C列に出来事、D列に文化,E列に世界史関連の年号、F列に世界の出来事という感じで横書きで作成しました。 あまりにもこれでは、長くなってしまうので、用紙設定を縦から横にしたいのです。つまり、1行が今度は 時代設定で2行目は年号、3行目は出来事・・・という風に。文面も、横書きから縦書きになりますが、 できるでしょうか? OSはWindousXPでEXCELで作成しています。 宜しくお願いします。

専門家に質問してみよう