- ベストアンサー
EXCELマクロで自動改行
EXCELで、1ページ内で、最後まで書くと自動的に列を折り返すようにマクロを設定したいのですが、完全初心者なので何をどうすればいいのか全く分かりません。明日、職場で使う必要があります。どうか助けて下さい(><) 1ページが60行で、A~Cの列を使って表を作った場合(A:名前、B:年齢、C:生年月日)、数値を入力して、各列の61行目に数値を入力すると、自動的にD~F(D:名前、E:年齢、F:生年月日)の列に折り返して数値が表示されるようにしたいです。大体、3回くらい折り返したいです。記述方法を教えて下さい。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.5です。ずばりマクロです。入力を聞いてくるので一度目は60、2度目は3を入力して下さい。 Dim 行数 As Long Dim 列数 As Integer Dim 行 As Long Dim 移動行 As Long Dim 移動列 As Integer Dim 組 As Integer 組 = 3 行数 = InputBox("行数を入力して下さい") 列数 = InputBox("列数を入力して下さい") For 行 = 1 To Cells(1, 1).End(xlDown).Row If 行 > 行数 Then 移動列 = ((Int((行 - 1) / 行数)) Mod 列数 + 1) * 組 - 2 移動行 = 行 - (Int((行 - 1) / 行数)) * 行数 + Int(((行 - 行数 * 列数 - 1) / 行数 / 列数) + 1) * 行数 Cells(移動行, 移動列) = Cells(行, 1) Cells(移動行, 移動列 + 1) = Cells(行, 2) Cells(移動行, 移動列 + 2) = Cells(行, 3) Cells(行, 1).ClearContents Cells(行, 2).ClearContents Cells(行, 3).ClearContents End If Next
その他の回答 (6)
- toshi_2000
- ベストアンサー率30% (306/1002)
No.6です。 SUB TEST() END SUB が先頭と最後に必要です。 一度お試しあれ。
お礼
時間が経ってしまって、申し訳ありません。 お教え頂いた方法で、ばっちり出来ました! この度は、稚拙な説明にも根気よくお付き合い下さり、本当に有難うございました。 また、機会がありましたら、いろいろとお教え頂けたら嬉しいです。明日からの業務で早速使わせて頂きます、助かりました。
- toshi_2000
- ベストアンサー率30% (306/1002)
No.4です。 それでは、10000行を三列では、一列あたり3300行になりますが、それであってますでしょうか。 それとも60行で区切って、続きは次のページになるのでしょうか。 似たようなソフトは作成したことがあります。
補足
説明が悪いばかりに、何度も質問して頂くような事になってしまって申し訳ありません。 後者の方です。1ページを60行ごとに3段で区切って、それを超えた場合は自動的に次のページに挿入されるような方法を探しています。 何度も申し訳ありません。宜しくお願い致します(__)
- toshi_2000
- ベストアンサー率30% (306/1002)
なかなか理解できなくて申し訳ないのですが、もう少し詳しく教えて下さい。 1.データを手入力するのではなく、どこかからデータが来るのですか。それをどうやってエクセルに取り込むのですか。テキスト読み込みもしくは、コピーペーストするのですか。 2.3段組というのは、読み込んだデータを自動的に A-C,D-F,G-Hの三列に(一列当たり60行で区切って)分けるということですか。 3.名前、年齢、生年月日のデータが縦に10000程並んでいるということですか。
補足
巧く説明できず、何度も申し訳ありません。 1.データはアクセスの入力システムに入力されていて、EXCELに書き出しして渡してくれます。 2.全くその通りです。それが出来れば、かなり業務が短縮できます。 3.同じくその通りで、その並びで単純に並んでいるだけです。医療検診データなので、毎日それくらいやって来ます。 どうぞ、宜しくお願い致します(__)
- toshi_2000
- ベストアンサー率30% (306/1002)
D1のセルに=A61という式(あとも同様)を入れておけば表示されます。
補足
再度のご連絡有難うございました。 今日、更に詳しく聞いて来ました。 Excelで、Word文書の3段組みのような表示方法を自動的に取ってくれる方法を探しています。量が膨大(毎日新規で10,000人分くらいのデータがやって来ます)なので、いちいち入れて行くのは手間が掛かり過ぎるのです。
- papayuka
- ベストアンサー率45% (1388/3066)
なぜそのような処理が必要なのでしょう? もし印刷のためなら、Excelではそのような処理は不要と思いますが、、、 ファイル-ページ設定で行タイトルを設定して、好きな所に挿入-改ページすれば良いような、、、
- toshi_2000
- ベストアンサー率30% (306/1002)
A1,B1,C1---A60,B60,C60の順番で入力し、C60の入力が終われば、カーソルをD1に移動させたいということですか。
補足
ご質問有難うございます。 A61からの数値がD1に、B61からの数値がE1、C61からの数値がF1に自動的に入るようにしたいです。更に、D61からの数値がG1に、E61からの数値がH1、F61からの数値がI1にも自動的に入るようにしたいです。 可能らしいのですが、今までマクロを使った事がないので、全く検討がつきません。宜しくお願い致します。
補足
丁寧なご回答有難うございました。 基本的な事を聞いて申し訳ないのですが、上記の命令文をそのままVBEを開いて「挿入」の「標準モジュール」に貼り付けしたらよろしいのでしょうか?