• ベストアンサー

エクセルのデータから三列の名簿をつくりたい。

エクセルのデータを基に名簿をつくりたいと思っています。 データは一行に一人ずつ名前が並んでいます。 最終的には、A41ページに縦に三列(一行に三人)ならぶように作らなくてはいけませんが、ページがとても多いので1ページ1ページ切り取りして貼り付けしていられません。 A4に収まるように区切って3列に並べてくれるような機能はありますか?説明がしずらくて伝わりにくいと思いますがよろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.7

こんにちは! No.4です。 そうですかぁ~! 縦が埋まれば右の列に移動して、それぞれのデータを3列のまとまりで表示したいということなのですね? それは失礼しました。 無理矢理って方法になりますが、 ↓の画像のように表を作ってみました。 単純にオートフィルで数式をコピーとはいかないと思います。 とりあえず、縦のデータは10行まで表示としての数式にしています。 尚、データ内で重複がないものといえば「氏名」が一番可能性が高いので 氏名を表示させ、その氏名に基づき、部署と役職を表示させるようにしています。 (同姓同名がある場合は別の方法が必要になります。) Sheet2のC2セルに =IF(ROW()>10,"",INDEX(Sheet1!$C$2:$C$100,ROW(A1))) F2セルに =IF(ROW()>10,"",INDEX(Sheet1!$C$2:$C$100,ROW(A1)+10)) I2セルに =IF(ROW()>10,"",INDEX(Sheet1!$C$2:$C$100,ROW(A1)+20)) という数式を入れます (数式の最後の+○というのは表示させる行数によって変わってきます) A2セルに =IF($C2="","",INDEX(Sheet1!$A$2:$B$100,MATCH($C2,Sheet1!$C$2:$C$100,0),COLUMN(A1))) として、B2セルまでオートフィルでコピー D2セルに =IF($F2="","",INDEX(Sheet1!$A$2:$B$100,MATCH($F2,Sheet1!$C$2:$C$100,0),COLUMN(A1))) として同じく、E2セルまでオートフィルでコピー G2セルにも =IF($I2="","",INDEX(Sheet1!$A$2:$B$100,MATCH($I2,Sheet1!$C$2:$C$100,0),COLUMN(A1))) とし、オートフィルでH2セルまでコピー 最後にA2~I2セルを範囲指定し、I2セルのオートフィルハンドルで下へコピーすると 画像のような感じの表になります。 また、エラー処理はしていませんので データ量によっては「0」になったりエラーになったりします。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

e0513106
質問者

お礼

ありがとうございます!試してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.8

No.4・7です! たびたびごめんなさい。 先ほどの数式に間違いがありました。 row()>10 というところをすべて row()>11 に変更してください。 前回の数式では元データの 11・21・31行目が抜けてしまいます。 どうも何度もごめんなさい。m(__)m

e0513106
質問者

お礼

いえいえ!ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.6

>A4に収まるように区切って に関してはA4用紙に何人分表示できるかを人間が判断する必要があります。数えるだけですが(^^; で いまいちやりたいことが見えてこない。 なんでサンプルを提示しないのか その例に沿った説明文なら、多少の説明不足は補えます。 とりあえず、添付図の右表のような形にしたいのでしょうか? 1ページ分は2行3列としています

e0513106
質問者

お礼

画像を添付する技術がなく分かりにくくなってすみません。 tom04さんが最後の回答で載せて下さった画像のようにしたいのです。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

VBAを使うと簡単な考え方でプログラムが組めるタイプです。 標準モジュールに貼り付け実行 Sub test03() d = Range("a65536").End(xlUp).Row 'データ最下行 MsgBox d k = 2 '第2行目からスタートポイント l = 10 ' J列から右に3塊の例。 For i = 1 To d Cells(k, l) = Cells(i, "A") Cells(k, l + 1) = Cells(i, "B") Cells(k, l + 2) = Cells(i, "C") l = l + 4 '4列分左をポイント=3列データ+空き1列 If l > 10 + 4 * 3 Then '3塊分の列より右に超えてポイントしたら l = 10 'J列に戻る k = k + 1 '直下行をポイント End If Next i End Sub ー>ー>->↩ ー>->ー>  のイメージ 元データセルの値を入れるべきセルに彫り投げているイメージ。 ーーーー 関数では 上例のJ2は1行目 j3は4行目 J5は7行目 ・・ になる式を計算して作らないとならない。 J2は=INDEX($A$2:$C$100,(ROW()-2)*3+1,1) K2は =INDEX($A$2:$C$100,(ROW()-2)*3+1,2) L2は= =INDEX($A$2:$C$100,(ROW()-2)*3+1,3) N,O,P列は例えば、N2は=INDEX($A$2:$C$100,(ROW()-2)*3+2,1)以下略 関数はデータを持ってくるセルでどのセルを持ってくるか計算して 表現しなくてはならない。

e0513106
質問者

お礼

ありがとうございます! 難しそうですが、試してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! すでに回答は出ていますが・・・ Sheet1のA列に氏名があり それを別SheetのA~C列に横に順番に氏名だけが並ぶようにすればいいのでしょうか? そういうことだと解釈させていただいて 一例を書かせていただきます。 ↓の画像の左側の氏名を右側の上から3列に順番に並べるようにしています。 Sheet2のA2セルに =IF(COLUMN()>3,"",INDEX(Sheet1!$A$2:$A$500,(ROW(A1)-1)*3+COLUMN(A1))) という数式をいれて 列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 尚、Sheet1のデータは500行までの数式ですので データ量によって範囲指定をアレンジしてみてください。 以上、参考になれば幸いですが、 的外れの回答なら読み流してくださいね。m(__)m

e0513106
質問者

補足

説明が足りず申し訳ありません。 項目は部署、役職、氏名とあります。その3列を1セットとして縦に3つ並べたいのです。(部署 役職 氏名 部署 役職 氏名 部署 役職 氏名) それで順番は、教えて頂いたものは左→右、端までいったら下の行の左→右となっていますが、 本当は、左の列の上↓下、下の端までいったら、右の列の上↓下というようにしたいのですが… 拙い説明で申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

#2です 括弧の位置が間違ってました m(_ _)m =INDEX(名簿,MOD((ROW(A1)-1),20)+1+(COLUMN(A1)-1)*20+INT((ROW(A1)-1)/20)*20*3)

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

印刷用の型を作ってはどうでしょうか? 1ページが20行(60人分)だったら =INDEX(名簿,MOD((ROW(A1)-1),20)+1+(COLUMN(A1)-1)*20)+INT((ROW(A1)-1)/20)*20*3 上記数式の20を1ページ分の行数に適宜、変更してください

全文を見る
すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

質問文が抽象的なので、回答も抽象的になってしまいますが、要は縦に1列に並んでいるデータが、縦3列になればよいのですよね? (違う意味だったら失礼) >A41ページ~~ とあるので、印刷に利用するイメージなのかと想像しますが… 例として元のデータがA1からA列に並んでいると仮定するとして、 印刷用のシートを別に作成し、(タイトル行を2行くらいに仮定して)  C1に元のA1、 C2に元のA2、 C3に元のA3  D1に元のA4、 D2に元のA5 ・・・・ みたいな参照式が作れればいいのでしょうから、 C1は元シートの"A" & (ROW()-3)*3+COLUMN() のセルを参照するようにして、あとはオートフィルで埋めれば、データが3列に並びます。 タイトルを各ページにつけるのなら、「行のタイトル」を設定してあげればよろしいかと… 参照の位置関係が違っていたり、横に順番でなく縦に順番だったりする場合でも、要領は同じなので同様にして(式を少し変えれば)できるでしょう。 意味が全然違っている場合は、無視してください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • excelで縦1列の名簿を縦3列の名簿に反映

    excelでデータが縦に並んだ、名簿のマスターデータの ブックがあります。(添付画像上部参照) そのマスターデータから、別のexcelブックに 課名と氏名のみを抽出し、縦3列の名簿を 作成したいです。(添付画像下部参照) 今は課ごとにコピー&ペーストにて対応していますが、 マスターデータが変更されたら、縦3列の名簿の内容も 自動的に反映されるようにしたいです。 また、縦3列の名簿は、各課ごとに1行以上の 空白行を挿入して、課の区切りが 分かりやすいようにしたいです。 課の人数は流動的なので、課のセルの固定はできません。 何かいい方法はないでしょうか。 よろしくお願いします。 Excel2013

  • excelで名簿を

    excelで名簿を作りたいのですが..... (1)登録順に1から始まる数字が割り振られています。(”登録番号”と呼ぶことにします) (2)A列から順に A列「登録番号1~30」、B列「1~30の人の名前」、C列「1~30の人の生年月日」が入るとします。 (3)登録番号が31~60のデータは、D列「登録番号31~60」、E列「31~60の人の名前」、F列「31~60の人の生年月日」に入るとします。 (4)2ページ以降も同様にしてA~C列には登録番号61~90の人のデータがD~F列には登録番号91~120の人のデータが入るとします。 ここでたとえば30番目の人の名前と生年月日のデータを削除したときに31番目以降のデータが一つずつずれるようにはできますか? 30番目には31番目の人の名前と生年月日が、60番目には61番目の人の名前と生年月日がくるといった具合です。データ(セル?)を追加するときも同様です。 データ(セル?)を削除、追加したときに2ページ目以降の印刷開始位置や開始番号(登録番号のことです)→(2ページ目なら61、3ページ目なら121 がずれないようにしたいのです。 どなたかよろしくお願いします<(_ _)>       

  • excelで縦1列の名簿を縦3列の名簿に反映

    先日、以下の質問を致しました。 https://okwave.jp/qa/q9321281.html excelでデータが縦に並んだ、名簿のマスターデータの ブックがあります。(添付画像上部参照) そのマスターデータから、別のexcelブックに 課名と氏名のみを抽出し、縦3列の名簿を 作成したいです。(添付画像下部参照) 今は課ごとにコピー&ペーストにて対応していますが、 マスターデータが変更されたら、縦3列の名簿の内容も 自動的に反映されるようにしたいです。 前回の質問では 『課の人数は流動的なので、課のセルの固定はできません。』 としましたが、難しそうなので、課のセルは固定したとして 実現はできないでしょうか?

  • エクセルで名簿を連続印刷したい。

    エクセルで名簿を連続印刷したい。 Sheet1に縦に2枚同じ様式のフォームがあります。 A1、A24に、それぞれ名前を連続して印刷したいと思っています。 Sheet2に、名簿があります。 A列 B列 日付 氏名 1  Aさん 2  Bさん という感じで、120名の名簿リストがあります。 どのようにすれば、2箇所名前を連続で入れることができるでしょうか? どうぞよろしくお願いします。 *フォーマットを作った人は別でして、これでできるようにしてくださいと言われています。

  • エクセルで名簿を作りたいのですが

    エクセル全くの初心者です、名簿を作りたいのですがうまく行かないので質問させて頂きます。 回覧板を回す名簿を作りたいと思っています、一行ずつあけて縦に15人の名前を入れ横方向に日付の欄を4つつけたいと思っています。 (4回まわした日付を入れる) 田中 良  11-1111 田中太郎  11-1112    上のような感じで左側の一マスの中に名前と電話番号(6桁 例11-1111)を入れたいです。名前が三文字の人は姓名の間を一マスあけてやってみたのですが3文字の人と4文字の人で電話番号の先頭がそろいません。セルを結合して中央ぞろえでもうまくいかないのですが回覧板の前の名簿は同じ形式の名簿でもちゃんとそろっているのですがどうやったらいいでしょうか?

  • エクセルの名簿抽出貼付けについて

    シート1に名簿があります。 A列    B列    C列 D列  E列  F列  G列  H列 ・・・・ 通し番号 クラス  名前 部活 趣味 部活 趣味 部活 ・・・  D列E列は1年時の部活と趣味 F列G列は2年時の部活と趣味です。 これが縦に100名以上、横には6年分くらい続きます。 で、シート2には A列    C列  D列  E列 通し番号 名前 部活 趣味 の枠だけがあります。およそ40名分の枠です。 そこで、シート1のあるセルに「2」「3」と入れてマクロボタンを 押すと、シート2に「3組の2年時のデータ」の名簿が出来上がる という抽出、コピー、貼付けのマクロを教えてください。 貼付けるのは、名前と部活と趣味だけですが、まず抽出方法が?です。 よろしくお願いします。

  • エクセルでA列、B列を一行にしたいのですが・・・

    エクセルでA列、B列を一行にしたいのですが・・・ (既にデーターが入っています。) セルを結合して中央揃えにしてみますと 警告マークが出て上手くいきません。 ちなみにA列に店番、B列には、店名が入れてあります。どのように説明させていただいたらわかり易いか 思いつかず、説明不足ですみません。 素人ですので簡単に出来ればありがたいのですが、 どうぞ宜しく御願いします。

  • Excelで名簿の重複を検索する方法

    よろしくお願いします。 Excelで名簿を作りました。 その名簿を使って、次のようなことをしたいのです。 A列には、全員の名前が入れてあります。 B列には、提出物を出した人の名前が入っています。 このA列とB列を見比べて、提出物を出していない人の名前だけをC列に反映させたいと思います。 そのような関数をご存知の方はいませんでしょうか??? よろしくお願いします。

  • Excelデータを抽出

    お世話になっております。 Excel2003です。 データがA列、B,C,D,..とならんでいます。 A列にパスワードのような意味のない数字とアルファベットの羅列が縦にならんでいます。 (仮にパスワードと呼びましょう) そのパスワードの横はそれに対応した名前、所属・・のような感じです。 一行(一レコード)単位で抽出したいんです。 A列に例えば「a」から始まるパスワードをもつ人のレコード(一行)だけを抽出したいとかいう感じです。 フィルタオプションも考えました。 フィルタオプションで検索条件のところに 別セルにいれた「a*」というものをいれてみたり。。 ワイルドカードはつかえるんでしょうか? ↑にかいたようなやり方ではなくてもかまわないので、希望がかなえられるようなやり方を教えてください。

  • EXCEL 同じ列での文字変換

    EXCELにて なんて言うのか分からないんですが、たとえばAの列で1行目に名前とかを変換して入力すると、Aの2行目以下でも頭の文字を打っただけで候補みたいに出る機能がありますよね?下手な説明ですみません。 で、その機能はどうもページが変わるとダメみたいなんです。Aの100行目でも使える(出る?)ようには出来ないでしょうか?

専門家に質問してみよう