- ベストアンサー
エクセルでデータを指定して印刷したい
●Sheet1に以下のようにデータが入っています。 A B C 1 あ 100 黄 2 い 200 緑 3 う 300 赤 ●Sheet2のセルA1に1を入力すると、 Sheet3に あ 100 黄、 Sheet2のセルA1に3を入力すると、 Sheet3に う 300 赤 と表示するようにしています。 今までは、データも少なく、Sheet2で印刷したいデータを選択し、 Sheet3を印刷していましたが、データが増えた為、Sheet2のA1に1を、 A2に3を入力して、印刷のボタンのようなものを作り、そこをクリック すると、1から3までをSheet3の表示状態で印刷したいのですが… データを全部印刷するなどはいろいろ調べてわかりましたが、 この、範囲指定はかなり調べましたが、わかりません。 どなたか、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBAがわかれば簡単なのですが。質問からすれば、関数か何かを使って作業しているようですね。どこまでできるかわかりませんが、一応コードを乗せておきます。これを「標準モジュール」に貼り付けて実行します。必要なら好きなシートにボタンを貼り付けてもできます。 Sub Insatu() Dim i, j, k As Integer Dim AA, BB As Integer Worksheets("sheet3").Activate 'Sheet2のA1,A2のデータをAA,BBに代入 AA = Worksheets("Sheet2").Cells(1, 1).Value BB = Worksheets("Sheet2").Cells(1, 2).Value For i = AA To BB '=====この範囲にsheet1から持ってきたデータをsheet3のどこに表示するかを記入。==== '=====たとえばsheet1の3つのデータを、Sheet3の1行目に表示するなら============== 'ちなみにcells(1,j+1).Valueは1行目j+1列の値という意味です。 'よってシート1のcells(i,j)の値を、シート3のcells(1,j+1)にコピーしています。 For j = 1 To 3 Worksheets("Sheet3").Cells(1, j + 1).Value = Worksheets("Sheet1").Cells(i, j).Value Next j '================================================================================= '印刷処理 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Next i End Sub
その他の回答 (3)
- kuma56
- ベストアンサー率31% (1423/4528)
>Sheet2のA1に1を、A2に3を入力して、印刷のボタンのようなものを作り、 ボタンの作り方はわかったのですか?(フォームやオートシェイプにマクロを登録する) >そこをクリックすると、1から3までをSheet3の表示状態で印刷したいのですが… ですが・・・の後がわかりませんよね。 マクロで処理したいけど記述の仕方がわかりません!なのか、マクロを組んだけどデータ1からデータ2への変更の仕方がわからない!なのか。 問題点をはっきりさせた方が解決への早道になります。 >データを全部印刷するなどはいろいろ調べてわかりましたが、 ちなみにどういう方法でなら全部印刷できましたか? それを書いておくと、質問者のスキルを推測してそれに見合った回答が来るかもしれないし、全部印刷の方法をアレンジして答えが出るかも知れません。 困り度が高いのなら、今ある材料はなるべくオープンにした方が、より良い回答に繋がりやすくなります。 2~3日前にも同じ質問をしていますが、せっかくヒントをもらっているのに、お礼も補足もなく閉め切ってしまっては、質問者がどこまで理解できて何が問題として残っているのかすらわかりません。 重複するけど困り度が高いのなら、問題点をはっきりさせた方が解決への早道になります。 今回の質問も、Sheet2で指定したデータをSheet3に表示させることはすでに出来ていて、手動でならその印刷もできるんですよね? ならあとは、Sheet2のA1で指定した数字を次の数字に書き換えてやりそれを印刷する・・・これを繰り返すマクロを組めばいいだけでしょう。 やり方は、エクセルの"マクロの記録"という機能を使えば、ある程度の所まで簡単にできます。 まずSheet2のA1セルとA2セルに数字を手入力して印刷するデータを指定する。 エクセルの"マクロの記録"機能をスタートさせる。 Sheet3を選択して印刷範囲を指定して(必要なら諸設定をして)印刷をする。 印刷が終了したら、Sheet2のA1セルを選択して、"マクロの記録"を終了させる。 これで1データだけ印刷するマクロができます。 このできたマクロを、フォームやオートシェイプで作ったボタンに登録します。 Sheet2のA1セルに次のデータを指示する数字を手入力して、マクロを登録したボタンをマウスでクリックすれば、次のデータが印刷されます。 でもこれではまだ、Sheet2のA1セルに入力してボタンをクリックするという作業が残ってしまいます。 そこで、5行上に書いた作業を少し変更してやり、Sheet2のA1セルの数字が自動で変わるようにしましょう。 やり方はいくつかあるかもしれないけど、たとえばSheet2のB1セルに、A1+1という式を予め入力しておき 印刷が終了したら、Sheet2のB1セルを選択してコピーし、A1セルを選択して値で張り付けて、"マクロの記録"を終了させる。 こうすることによって、一枚印刷が終わるとSheet2のA1セルの値は一つ上がり、Sheet3には次のデータが表示されます。 ここでマクロを登録したボタンをマウスでクリックすれば、次のデータが印刷されSheet2のA1セルの値は更に一つ上がり、Sheet3にはそのデータが表示されます。 これでもまだ、印刷のためにボタンをクリックするという作業が残ってしまいます。 そこで上記で作成したマクロを、VBEで編集して、自動で次のデータまで印刷できるようにしてやります。 ボタンをクリックするだけで、同じマクロが繰り返し動かして目的が達するなら、そのマクロを繰返しを指示する Do・・・・Loop ステートメントで自動的に繰り返してやれば大丈夫です。 上記でボタンに登録したマクロをVBEで編集モードに入り、 Do・・・Loop でくくってやります。 その際にどこまで繰り返すのかを指示しておかないと、延々と動くことになりますので(実際には構文エラーで動かないけどね)、Sheet2のA1セル>Sheet2のA2セル となるまでと指定しましょう(Until) これで、Sheet2のA1セルに入力した値から、A2セルに入力した値まで自動で印刷するマクロができます。 実際にはSheet2のA1セルやA2セルにおかしな値が入力されたら MsgBox で警告するとかもう少しぬ詰める余地はあると思いますが、まず第一弾としてこんな所でどうでしょうか??
お礼
皆さんの、回答をもとにいろいろと、やっています。 何とかできそうです!ありがとうございました!!
- imogasi
- ベストアンサー率27% (4737/17069)
Sheet2のセルA1に入れる1とか、A2に入れる3とかは、行番号のことか。それをはっきり言わないと。 FRom-To的に、第A1行から第A2行までをSheet3に持ってくるということかな。 A1<A2は保証されると考えて良いか。 ーーーーー 例データ Sheet1 A2:B8 A列 B列 C列 a x 1 s y 1 d z 1 a u 1 s v f s g t C2の式は =IF(AND(ROW()>=Sheet2!$A$1,ROW()<=Sheet2!$A$2),MAX($C$1:C1)+1,"") と入れて下方向に式を複写する。 ーー Sheet2 A1 2 A2 5 ーー Sheet3 A1に =IF(ROW()>MAX(Sheet1!$C$1:C$100),"",INDEX(Sheet1!$A$1:$BA$100,MATCH(ROW(),Sheet1!$C$1:$C$100,0),1)) と入れて下方向に式を複写。 B1には =IF(ROW()>MAX(Sheet1!$C$1:D$100),"",INDEX(Sheet1!$A$1:$BA$100,MATCH(ROW(),Sheet1!$C$1:$C$100,0),2)) と入れて下方向に式を複写 結果 A1: a x s y d z a u ーー このSheet3を印刷。 ーー 上記は自称imogasi方式。これの特徴などは、Googleで照会すると記事や質問が出てくる。
お礼
皆さんの、回答をもとにいろいろと、やっています。 何とかできそうです!ありがとうございました!!
- Cupper
- ベストアンサー率32% (2123/6444)
Excelではそのようなことはマクロを使用しない限り不可能です 代わりに Wordの差込印刷を利用されてはいかがでしょう Excelのファイルを Wordの差込印刷用のデータとして指定することで解決するような気がします
お礼
皆さんの、回答をもとにいろいろと、やっています。 何とかできそうです!ありがとうございました!!
お礼
皆さんの、回答をもとにいろいろと、やっています。 何とかできそうです!ありがとうございました!!