プロが教える店舗&オフィスのセキュリティ対策術

A列はひらがなのイニシャル(例.あ)
B列は整理番号(例.112)
C列は氏名
が入力されているシートがあります。
入力行は対象者の増減で毎回変わりますが、約150行です。

これは、氏名の五十音早見表です。対象者が何番の整理番号かを調べるのに利用しています。
例えば、鈴木一郎さんは、下の表では23番だと見つけ出せます。
す 11 鈴木アリサ
す 23 鈴木一郎
す 86 砂川太郎

こんな感じで約150人分が上から下へ一列に並んでいるのですが、印刷時にはなるべく一枚に印刷したいので、印刷時の指定で3列になるような指定方法はあるでしょうか?


あ 50 朝田真央   た 89 田仲真紀   ま 16 丸井陽一 
い 12 池田千鶴   た 57 田宮沙希   み 88 宮田信治
い 44 石田真一   た 13 田村幸一   み 77 宮村ミク
  ・             ・              ・
  ・             ・              ・

ちなみに、現在は印刷シートとデータシートを分けて、印刷シートはデータシートからリンクさせるようにして、画面上も3列に並ぶようにして、それを印刷しています。
印刷シートのセルE2に、=Sheet1!A51 として、表示させる方法です。

そうじゃなくて、データシートを印刷するときの指定方法で、3列になる = 1ページにおさまるような印刷指定方法はないものでしょうか?

よろしくお願いします。

A 回答 (2件)

印刷補助用のツールを使用すると、何も考えなくて良いです。



FinePrint5
http://www.nsd.co.jp/share/fineprint/

Excelから1列で印刷するよう、FinePrint宛てに印刷。
FinePrintでNアップ指定してプリンタ宛てに印刷実施。

--
> データシートを印刷するときの指定方法で、

ってのは厳しいかと。
質問者さんのように参照形式で印刷用のシートを作るのが無難。
    • good
    • 0
この回答へのお礼

>参照形式で印刷用のシートを作るのが無難。
ですか、ないものねだりだったようですね。

紹介の製品も参考にさせていただきます

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

お礼日時:2007/01/08 19:09

(A)VBA向きの問題ですね。


(B)関数で氏名欄列に注目して1列のものを他シートに3列に変える事はできます。
(A)
VBEの標準モジュールに、下記を貼り付け、実行。
Sub test01()
For j = 1 To 3
For i = 0 To 15
Worksheets("Sheet1").Cells(Int(i / 3) + 1, (i Mod 3) * 3 + 4 + j) = Worksheets("Sheet1").Cells(i + 1, j)
Next i
Next j
Range("E1:M6").PrintOut
End Sub
例データ A1:C15で
a1あ
b2い
c3う
d4え
e5お
f6か
g7き
h8く
i9け
j10こ
k11さ
l12し
m13す
n14せ
o15そ
の場合、実行後E1:M5に
a1あb2いc3う
d4えe5おf6か
g7きh8くi9け
j10こk11さl12し
m13すn14せo15そ
実用には
(1)データ最下行数を捉えるコード
(2)2列に折りたたんだ後の、印刷領域の最後行を捉えるコード
が必要ですが、Range(・・).End(xlUP).RowでWEB照会デモしてみてください。
(2)Sheet2のA1に
=INDEX(Sheet1!$A$1:$C$15,((ROW()-1)*3)+((COLUMN()-1)/3)+1,MOD(COLUMN()-1,3)+1)
と入れて、I1まで式を横方向に複写。
次にA1:I1を下方向に式を5行複写。
結果Sheet2にA1:I5に
a1あb2いc3う
d4えe5おf6か
g7きh8くi9け
j10こk11さl12し
m13すn14せo15そ
    • good
    • 0
この回答へのお礼

VBAとは、すごいですね。

大変参考になりました。

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

お礼日時:2007/01/08 19:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!