アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

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

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が見つからない時は、教えて!gooで質問しましょう!

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