出産前後の痔にはご注意!

名簿一覧の情報があって、それを用いてExcelで名刺(カード)を作りたいです。

添付画像を参照頂ければと思いますが、
当然一枚一枚書くのは骨が折れるので、名簿から自動で引っ張ってきたいです。

しかしF3に=B3等と入れて下にコピーすると、5行下にずれるためF7は=B8となってしまいます。
これをコピーした時にも1行ずれてF7=B4という具合に連番で入れるにはどうすればよいでしょうか。
また何か有効な関数などありますでしょうか。
よろしくお願いします。

「Excelで名簿から名刺(カード)を作成」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (5件)

一例です。

印刷しないセル
F1 に 3 と入力
G1 =F1+1
H1 =G1+1
J1 =H1+1 で順番に数値が出る様にしておく。
一枚目の
年齢は =INDEX(B:B,F1)
出身は =INDEX(C:C,F1)
趣味は =INDEX((D:D,F1)
氏名は =INDEX(A:A,F1)
二枚目は
年齢は =INDEX(B:B,G1)
出身は =INDEX(C:C,G1)
趣味は =INDEX((D:D,G1)
氏名は =INDEX(A:A,G1)
以下同様で設定しておけば
F1セルに4とびの数値を入れればご希望の内容が表示されると思います。
    • good
    • 1

4人分程度ならリンク貼り付けでもそんなに時間はかからないと思います


目的により最適な方法が変わると思います

案1
よくやるのがユニークな番号(ID)を付けてVLOOKUP関数でデータを引っ張ってくる
「VLOOKUP」で検索
印刷したい番号を入力することでデータが切り替わる

案2
INDEX関数やROW,COLUMNを使って、参照先をシフトさせる
(INDIRECTやOFFSETも同様であるが、再計算の関係であまり使わないほうが良い)
F3セル =INDEX($B:$B,(ROW()+2)/5+(COLUMN()-3)/3*2)
F4セル =INDEX($C:$C,(ROW()+1)/5+(COLUMN()-3)/3*2)&""
F5セル =INDEX($D:$D,(ROW())/5+(COLUMN()-3)/3*2)&""
G6セル =INDEX($A:$A,(ROW()-1)/5+(COLUMN()-4)/3*2)
F3:H7セル範囲を選択し、右へ、下へオートフィル

案3
オートフィルと置換を使う方法
一方通行ではあるが、質問文通りにはなる。
F3セル ☆B3
F4セル ☆C3
F5セル ☆D3
G6セル ☆A3
F3:H7セル範囲を選択して、下へオートフィル
[Ctrl]+[H]置換 ☆ → =

I3:I5,J6セルも上記と同様
    • good
    • 0

その程度なら、ひとつずつ直接参照先を指定すれば…。



自分なら、参照する範囲をROW関数を使って行番号を拾い出し、INDIRECT関数やOFFSET関数で指定するかな。
=INT((ROW()/5))+2
これで参照する行番号を指定できる。
=INDIRECT("A"&INT((ROW()/5))+2)
=OFFSET($A$1,INT((ROW()/5))+1,0,1,1)
こんなだろうか。
(AさんBさん向けで、未検証。CさんDさん向けにはINT関数とMOD関数の組み合わせで対応してください)
    • good
    • 0

こんにちは!



行合わせの問題だと思いますが、関数でやるにしても結構厄介ですね。
そこでお望みの方法でないかもしれませんが、VBAでの一例です。

画像通り、G5・J5・G10・J10・・・セルにA列の名前を入力するという前提です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
G5・J5・G10・・・セルに名前を入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range
With Target
If .Column = 7 Or .Column = 10 Then
If .Row Mod 5 = 0 Then
.Offset(-3).Resize(3).ClearContents
Set c = Range("A:A").Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Offset(-3) = c.Offset(, 1)
.Offset(-2) = c.Offset(, 2)
.Offset(-1) = c.Offset(, 3)
Else
MsgBox "該当データなし"
.Select
End If
End If
End If
End With
End Sub 'この行まで//

※ 保存時は「マクロ有効ブック」として保存します。m(_ _)m
    • good
    • 0

INDEX関数とMATCH関数を組み合わせて使うのはどうでしょうか。


http://office-qa.com/Excel/ex48.htm
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで名札を作りたい

エクセルで氏名の一覧表と名札票を同時作成したいと思っています。

ポイントとしては、一覧表に氏名を載せ、それを名札票に自動的に転記させたいのです。

注意点としては、名札票には、氏名転記(フォント;36)して、その後すぐに『さま(フォント;16)』を自動的に差し込むという所です。

『さま』に関しては、同一セルに氏名フォントを-20して、挿入したいです。マクロの設定が必要になると思われますが、どうしてもうまくいきません。

どなたかご教授下さい。宜しくお願いします。

Aベストアンサー

tankob3210さん、こんにちは。
私も全くの素人なので、たいしたアドバイスはできませんが、tankob3210さんのコードを見て気づいた事を少しだけ。

.Characters(Start:=Len(.Value) , Length:=1)
のところは下のようにすれば、"様"を"さま"にしても対応できますね。
.Characters(Start:=Len(.Value) - 1, Length:=2)
また、"さま"を加える前に、文字列の長さを変数(x)に保持しておけば、
.Characters(x + 1, .Value-x)とすることで、何文字でも対応できます。

.Font.Size =.Font.Size - 20

のところは、元のフォントサイズが16や20だった場合、
エラーになるので.Font.Size =16のようにした方が良いかと・・・。

シートのBeforeDoubleClickを使うなら、
Cancel=True
を入れるとセルが編集状態になりません。

>ダブルクリックしなくても、自動的に反映されるようにしたいです

との事ですが、マクロを作動させるためのきっかけは必要ですよね、イベントを使わないならコマンドボタンに登録する等になりますよね。Targetを使えるので、Wクリックはそれなりに良い方法だと思いますけどね。あとは右クリックを使うとか。

>管理上別シートに分けて使用したい

これについても、別シートの転記先を特定できれば、可能ですね。

長々と書き連ねましたが、これ以上はシートを拝見してみないと何とも言えませんが、tankob3210さんのやりたい事は、十分実現可能と思います。

頑張ってみて下さい。

tankob3210さん、こんにちは。
私も全くの素人なので、たいしたアドバイスはできませんが、tankob3210さんのコードを見て気づいた事を少しだけ。

.Characters(Start:=Len(.Value) , Length:=1)
のところは下のようにすれば、"様"を"さま"にしても対応できますね。
.Characters(Start:=Len(.Value) - 1, Length:=2)
また、"さま"を加える前に、文字列の長さを変数(x)に保持しておけば、
.Characters(x + 1, .Value-x)とすることで、何文字でも対応できます。

.Font.Size =.Font.Size - 20

のところは...続きを読む

Qエクセルの表になってる名簿から個人別のカードを印刷するには

エクセルのひとつのシートに一覧になった名簿があるのですが(6000人分くらい)この表から任意の250人位を選んで別のシートに用意されてるカードに名前、住所、電話番号、所属など必要な項目を個人別に印刷したいのです。一枚一枚手作業で設定して印刷するのは大変なので、自動的に250人のデータ-を差し換えながら250枚のカードを印刷する方法をお教えください。なお、250人のデターだけを選択して他を削除してもいいのでデータ-の抽出方法には困らないのですが、エクセル上の250のシートにカードを作ることは、容量上困難です。また、個々のカードは、印刷すればよくエクセル上にファイルとして残る必要はありません

Aベストアンサー

朝時間がなくて応えられませんでしたが、夜見ると似た質問があり、そちらに解答を入れました。参考にしてください。
http://www.okweb.ne.jp/kotaeru.php3?qid=667710
の#7です。
抽出した後のやり方です。私は似たようなことを全体を
VBAでやってますが、上記では関数式+最少のVBAで自動化
を工夫しました。

Qexcelからexcelへの差し込み印刷

お世話になります。

excelでwordへの差し込み印刷をよく利用するのですが、
同様に、
excelのデータをexcelに流し込んで印刷する方法はありますでしょうか。

excelの名簿のデータを
excelの表のフォーマットに流し込んで
1人づつ印刷したいのですが。

お分かりの方いらっしゃいました教えてください。
どうぞ宜しくお願い致します。

Aベストアンサー

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

上記の品をお送り申し上げます。
ご査収ください

以上
Xの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,2,FALSE)
Yの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,3,FALSE)
Zの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,4,FALSE)

---
結果

送り状

住所山田 三郎
氏名東京都江東区

品物かばん

上記の品をお送り申し上げます。
ご査収ください

以上
ここで
VBE画面で標準モジュールに
Sub test01()
For i = 1 To 2 '人数分
Range("H1") = i
Range("A1:G20").PrintOut '印刷範囲は各人同じとする
Next i
End Sub
を張り付け、実行する。
山田、植田分の紙が2枚印刷されました。
これは質問者はVBAの経験も無いでしょうと、最低限にしてあります。
VBAを勉強してください。
別ブックにある名簿を対象などは複雑になるので避けています。

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

...続きを読む

Qワード(エクセル)で名札を作成

ワード(又はエクセル)で名札等を作るとき、たとえば、2.5cm×5cmの紙片を作成するにはどうしたらいいでしょうか?

Aベストアンサー

WORDの場合
ツール⇒はがきと差込印刷⇒差込印刷ウィザード⇒ラベル⇒ラベルオプション⇒サイズの詳細⇒サイズ設定

私の場合、少数なら手書きで書いてしまいますが、大量ラベルの場合はエクセルで作ったリストを「ラベルの配置」より
挿入します。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルの名簿一覧表からすでにエクセルで作られている一人づつのシートに差込印刷

エクセルでできている名簿リストから、すでにエクセルでできている個人別のシートに差込印刷したいのです。一人ずつセル参照で作ることはできるのですが、全部で300人分くらいあるのでワードの差込印刷のように一度にできる方法が知りたいのです。本日中にやらねばならないので手作業では、間に合いそうにありませんしVBAの勉強をしている余裕もありません。

Aベストアンサー

VBAでもない解答をします。ただファイル-印刷の操作を
300回すること。最終部のようにすれば、VBAで自動化も出来ます。
(1)Sheet2のA1:E3に住所録が
氏名郵便番号住所1住所2
山田 和郎111-1111東京都小平市新町2-1-2光マンション222
木之下 重雄222-2222東京都三鷹市本町4-3-2三国荘201
あるとします。本番ではA1:E300とかに住所録があります。
(2)Sheet1は印刷する画面シートです。
F1セルに2、
F2に="Sheet2!A"&F1
F3に="Sheet2!B"&F1
F4に="Sheet2!C"&F1
F5に="Sheet2!D"&F1
F6に="Sheet2!E"&F1
郵便番号を置くセルをB3として式=INDIRECT(F3)
府県市を入れるセルをB5として式=INDIRECT(F4)
町番地を入れるセルをB6として式=INDIRECT(F5)
気付を入れるセルをC6として式=INDIRECT(F6)
名前を入れるセルをB8として式=INDIRECT(F2)
C8に「様」を入れる。
(3)F1セルが2の時は
111-1111

東京都小平市
新町2-1-2光マンション222

山田 和郎様
となりますが、このA1:C8を印刷する。
(4)F1セルの値を3に変える(3を入力する)と
222-2222

東京都三鷹市
本町4-3-2三国荘201

木之下 重雄様
と瞬時に変るが、これを印刷する。
(5)F1を4、5、6、・・・と変えて印刷、変えて印刷すれば良い。
この(5)の部分だけをマクロの記録やVBAにすれば、
同じVBAでも既解答よりずっと易しいと思いますがいかがででしょうか。
Sub test01()
Worksheets("sheet1").Activate
For i = 2 To 3 '300
Cells(1, "F") = i
Range("a1:c8").PrintOut
Next i
End Sub
行高、セル幅、フォントサイズなどは手動で設定。
氏名、郵便番号、住所を置くセルは自由に出来ます。
上記でF1:F6も自由に別列に設定できます。

VBAでもない解答をします。ただファイル-印刷の操作を
300回すること。最終部のようにすれば、VBAで自動化も出来ます。
(1)Sheet2のA1:E3に住所録が
氏名郵便番号住所1住所2
山田 和郎111-1111東京都小平市新町2-1-2光マンション222
木之下 重雄222-2222東京都三鷹市本町4-3-2三国荘201
あるとします。本番ではA1:E300とかに住所録があります。
(2)Sheet1は印刷する画面シートです。
F1セルに2、
F2に="Sheet2!A"&F1
F3に="Sheet2!B"&F1
F4に="Sheet2!...続きを読む

QWord差し込み印刷 ラベルの枠をつけたい

表記のとおりです。
ラベルの枠(線)が表示されません。
はさみで切りますので、枠の表示の仕方を教えてください。

Aベストアンサー

ラベルの枠線は罫線(表)と同じ意味になっています。

枠線を表示したい時には、ラベルのどこでもよいのでカーソルをおいて
「罫線」メニューの「線種とページ罫線と網掛けの設定」をクリックします。
ダイアログボックスが表示されるので、「罫線」タブをクリックして種類の所の「すべて」の上でクリックしてください。
それで、右下の「OK」ボタンをクリックすると罫線が表示されると思います。
印刷プレビューで確認してもらい、枠線が表示されていると思います。

QExcelの行列幅をcmで表示したい

Excelの列幅や、行高は、文字数(ピクセル)表示になっていますよね。それを、cm(mmでもOK)単位の表示ができないのでしょうか? 実は公的な書式を作成するため、寸法どおりにしないといけないので、いつも印刷してからものさしで計っては、・・の繰り返しなんです。どなたかアドバイスをお願いします。ジャストシステムの三四郎を以前のパソコンで使っていたときには、それができたんですよ・・

Aベストアンサー

エクセルのバージョンは?
2007ならルーラーの cm,mm の指定は可能ですが・・・
http://www.eurus.dti.ne.jp/~yoneyama/office2007/excel2007-02.html#page_layout

でなければ、
ものさしマクロ
http://hp.vector.co.jp/authors/VA016119/sizemm.html

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング