適当な関数、方法があれば教えてください。
参加日時、会社名、部署名、氏名、メールアドレス、連絡先 などのデータが記載されているシートがあります。
このシートから、別シートの名札印刷用のシート(会社名、氏名のみを記載するようになっていて、印刷して切り取って名札とするもの)
に会社名、氏名のみのデータを持っていきたいのですが、適当な方法はありますでしょうか。
(VLOOKUPとも少し違うようで質問させていただいた次第です)
そちらのシートの構成が見えないので考え方だけ・・・。
まずは「参加者」シートが下記のような具合だとします。
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | 参加日時 | 会社名 | 部署名 | 氏名 | メールアドレス | 連絡先 |
2 | yy/mm/dd | ほにゃらら | 営業部 | g830 | ないしょ | 教えないよん♪ |
3 | yy/mm/dd | ほにゃらら | システム部 | kn1967 | ない(笑) | 同上 |
名札印刷用シートが横2列で
2行目以降は下方向コピーされているものとします。
A | B | |
---|---|---|
1 | =INDIRECT("参加者!B" & ROW()*2)&CHAR(10)& INDIRECT("参加者!D" & ROW()*2) | =INDIRECT("参加者!B" & ROW()*2+1)&CHAR(10)& INDIRECT("参加者!D" & ROW()*2+1) |
2行目以降は下方向コピー。
ROWS(現在行)を元にして下記のような参照先を計算してINDIRECTで参照しています。
A | B | |
---|---|---|
1 | 参加者の2行目を参照 | 3行目を参照 |
2 | 4行目を参照 | 5行目を参照 |
名札印刷用シートが横3列の場合は下記のような具合になります。
こちらも2行目以降は下方向コピー。
A | B | C | |
---|---|---|---|
1 | =INDIRECT("参加者!B" & ROW()*3-1)&CHAR(10)& INDIRECT("参加者!D" & ROW()*3-1) | =INDIRECT("参加者!B" & ROW()*3)&CHAR(10)& INDIRECT("参加者!D" & ROW()*3) | =INDIRECT("参加者!B" & ROW()*3+1)&CHAR(10)& INDIRECT("参加者!D" & ROW()*3+1) |
この場合だと
A | B | C | |
---|---|---|---|
1 | 参加者の2行目を参照 | 3行目を参照 | 4行目を参照 |
2 | 5行目を参照 | 6行目を参照 | 7行目を参照 |
表が複雑な場合は COLUMN(現在列)も組み合わせると楽になる場合もあります。
会社名と氏名が別々のセルであるならば、
上記を参考にそれぞれ対象セルを計算させるようにしてください。
※はてなでは質問時に画像を乗せる事が出来、
よりピンポイントな回答を得られやすくなります。次回はご配慮を・・・。
どういうデータ形式になっているのでしょうか?
よくあるデータならば、会社名、氏名が書かれた列をコピーするだけですむと思います。
参加日時、会社名、部署名、氏名、メールアドレス、連絡先がひとつのセルに入っているのでしょうか?
参加日時:2009/12/24
会社名:(株)はてな
部署名:人力部
氏名:はてな太郎
メールアドレス:tarou@hatena.jp
連絡先:03-xxxxxxx
が1つのセルとかですか?
質問を見ると名簿リストから、会社名と氏名だけの一定の間隔で抜き出すということになるかと思われます。
これをワークシート関数で行う為に詳しく説明します。
例えば、名簿リストがこんな感じで、「名簿リスト」という名前のシートにあるとすると
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | 参加日時 | 会社名 | 部署名 | 氏名 | メールアドレス | 連絡先 |
2 | ×× | A社 | ○ | 田中 | ×× | ○○ |
3 | ×× | B社 | ○ | 佐々木 | ×× | ○○ |
4 | ×× | C社 | ○ | 伊藤 | ×× | ○○ |
5 | ×× | A社 | ○ | 工藤 | ×× | ○○ |
6 | ×× | B社 | ○ | 鈴木 | ×× | ○○ |
7 | ×× | C社 | ○ | 木村 | ×× | ○○ |
名札シートで一枚の名札がこんな感じだとします。
A | B | C | D | |
---|---|---|---|---|
1 | ||||
2 | 会社名: | A社 | ||
3 | 氏名: | 田中 | ||
4 |
この場合のC2セル(A社)のところに入る数式は
=INDEX(名簿リスト!B:B,INT(ROW()/4)+2)
C3セル(田中)のところに入る数式は
=INDEX(名簿リスト!D:D,INT(ROW()/4)+2)
そうしておいて、一枚の名札(A1セルからD4セル)を選択して下にオートフィルすれば縦にいっきに名札が作成できます。
それで実際の環境に合わせた数式を作るために、関数の意味を説明しておきます。
ROW() ・・・数式のあるセルの行数
INT(数値) ・・・数値を切り捨てして整数に
INDEX(範囲,数値) ・・・範囲で数値番目のセルの値を返す
実際にやっていることは、
そのセルの行数を名札の繰り返しとなる行数の4で割り小数点以下を切り捨て
名簿リストは2行目から始まっているので2を足して、名簿リストからその番目の値を取り出すということ。
それらの関数を組み合わせれば、奇数行と偶数行を抜き出して名札を2列にしたり簡単にできますよ。
コメント(0件)