dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
今,エクセルで出席簿を作成しています。
そこで,以下のことができないかと思ってご相談です。

出席停止欄及び忌引欄に情報(欠席日数とその事由)を記入した生徒の名前と,入力した情報(欠席日数とその事由)だけを集約して,自動で一覧に表示できないでしょうか?
詳しくは添付画像を見ていただけたらと思っています。

これができるようになれば,かなり校務が楽になります。
どうか,ご教授ください。

「エクセル 出席簿作成(1)」の質問画像

A 回答 (8件)

1つのセルに複数の行を一気に入れるのは難しいので、まずは、D1セルに以下の式を入れて、D9セルまで下にドラッグコピーしてみてください。


=IF(MOD(ROW(A1),3)=0,"",IF(C1="","",IF(MOD(ROW(A1),3)=1,A1&" "&B1&C1&CHAR(10),"")))

また、1つのセルに複数の行を入れるには、任意のセルに、以下の式を入れてみてください。
=D1&D2&D3&D4&D5&D6&D7&D8&D9
    • good
    • 0
この回答へのお礼

いつもお世話になっております。
実際にやってみたらできました。
まだまだ勉強不足ですみません。

お礼日時:2014/04/01 03:22

>詳しくは添付画像を見ていただけたらと思っています。


提示の一覧が1つのセルに複数人の情報を纏めているように見えますが、それは無理な条件です。
一覧と表示されたセルは複数のセルを結合したものとして右側のセルは氏名(生徒名)毎に1つのセルに纏めるのであれば以下の式で良いでしょう。
但し、無欠席の場合は氏名のに表示することになります。

F2=CONCATENATE(OFFSET(A$2,(ROW(A1)-1)*3,0)&" ",IF(OFFSET(A$2,(ROW(A1)-1)*3,2)="","",OFFSET(A$2,(ROW(A1)-1)*3,1)&OFFSET(A$2,(ROW(A1)-1)*3,2)),IF(OFFSET(A$2,(ROW(A1)-1)*3+1,2)="","",OFFSET(A$2,(ROW(A1)-1)*3+1,1)&OFFSET(A$2,(ROW(A1)-1)*3+1,2)),IF(OFFSET(A$2,(ROW(A1)-1)*3+2,2)="","",OFFSET(A$2,(ROW(A1)-1)*3+2,1)&OFFSET(A$2,(ROW(A1)-1)*3+2,2)))

Excel 2013で検証した結果の画像を添付します。
「エクセル 出席簿作成(1)」の回答画像8
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。
実際にやってみてできました。
まだまだ勉強不足ですので,参考にさせていただきたいと思います。
ありがとうございました。

お礼日時:2014/04/01 03:04

No.6です。


画像が見えないですね。
拡大版を貼りなおしました。
「エクセル 出席簿作成(1)」の回答画像7
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。
実際にやってみてできました。
まだまだ勉強不足ですので,参考にさせていただきたいと思います。
2回もご回答いただき本当にありがとうございました。

お礼日時:2014/04/01 03:05

表の作り方が自動集計することを考慮されていないように思います。


簡単に修正しましたので、添付ファイルのようにされることをお勧めします。
※氏名欄はA4~A6セルのように、3行をひとくくりに結合しておいてください。

■ポイントは、下記のとおりです。
・欠席日数(数値)と内容(文字)を異なるセルに分けて入力する
・数値を関数(式)で集計
・フィルター機能を使って休んだひとのみを抽出

■手順
1. 添付画像のように表を修正してみてください。
2. 数式は画面上に表示されませんので、C4セルに『=SUM(D4:I4)』を入力してください。
3. C4セルをコピー
4. C5~C12セルに、『形式を選択して貼り付け』-『数式』 で貼りつけ
5. 第3行を選択
6. 『データ』-『フィルタ』をクリック
7. C3セルの▼マークをクリック
8. すべての項目にチェックがついていますので、0(ゼロ)のチェックのみをはずしてOKをクリック

■全項目に表示に戻すとき
9. C3セルの▼マークをクリック
10. 『すべて表示』をクリックしてOKクリック
※フィルターは残しておいてください。(その都度消す必要はありません)

■補足
手順を細かく区切って書いたので、やることが多いように見えますが簡単にできると思います。
内容欄(欠席理由)に数字のみを入力するとカウントされますのでご注意。(数字と文字が混在して入ればOKです)
「エクセル 出席簿作成(1)」の回答画像6
    • good
    • 1

》 詳しくは添付画像を見ていただけたらと思っています。


それを見た結果の、下の私の意見が参考になれば幸いです。

貴方は、Excel をこれから始めようとする人か、始めたばかりの超初心者なので、今のところ、当分の間は、その「出席簿」は手書きで作成し続けながら、初心者用の市販の参考本で勉強することをお奨めします。
そうすれば、Excel の得意ワザが分かって、それに見合った「出席簿」に変更したくなるはずです。それから此処で質問するのがよろしいかと。
    • good
    • 0
この回答へのお礼

おっしゃるとおりです。
もっと勉強したいと思います。
ご示唆,ありがとうございました。

お礼日時:2014/04/01 03:06

例えば元データが添付画像のように1行目が項目名で2行目からデータが入力されているなら、以下の関数で該当データを抽出することができます(添付画像参照)。



F2セル
=INDEX(A:A,FLOOR(SMALL(INDEX(($B$2:$B$200="欠席")+($C$2:$C$200="")*1000+ROW($2:$200),),ROW(1:1))+1,3)-1)&""

G2セル(右方向に1つオートフィル)
=IF($F2="","",INDEX(B:B,SMALL(INDEX(($B$2:$B$200="欠席")+($C$2:$C$200="")*1000+ROW($2:$200),),ROW(1:1)))&"")

上記3つのセルを選択し下方向に適当数オートフィルしてください。
「エクセル 出席簿作成(1)」の回答画像4
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。
実際にやってみてできました。
まだまだ勉強不足ですので,参考にさせていただきたいと思います。
ありがとうございました。

お礼日時:2014/04/01 03:07

こんんいちは!


お示しの画像のような「一覧」ではなく、↓の画像のような感じで良いのであれば・・・

VBAになってしまいますが、一例です。
上側がSheet1で下側のSheet2に表示するとします。
尚、Sheet1の1行目は項目行になっている前提です。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面(カーソルが点滅しているところ)
に↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, lastRow As Long, cnt As Long
Dim c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
.Range("A1").Copy wS.Range("A1")
.Range("C1").Copy wS.Range("B1")
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
.Range("A:A").Insert
With Range(.Cells(2, "A"), .Cells(lastRow, "A"))
.Formula = "=IF(B2="""",A1,B2)"
.Value = .Value
End With
For i = 2 To lastRow
If .Cells(i, "C") = "忌引" Or .Cells(i, "C") = "出席停止" Then
If .Cells(i, "D") <> "" Then
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
cnt = wS.Cells(Rows.Count, "A").End(xlUp).Row + 1
wS.Cells(cnt, "A") = .Cells(i, "A")
wS.Cells(cnt, "B") = .Cells(i, "D")
Else
cnt = c.Row
wS.Cells(cnt, "B") = wS.Cells(cnt, "B") & " " & .Cells(i, "D")
End If
End If
End If
Next i
.Range("A:A").Delete
End With
wS.Columns.AutoFit
End Sub 'この行まで

※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。m(_ _)m
「エクセル 出席簿作成(1)」の回答画像3
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
実際に試してみました。
とっても役立ちました。
ありがとうございました。

お礼日時:2014/04/01 03:23

これは無理。


今までの手書きだと思いますが、それをそのままパソコンでやろうとしても無理があります。
そもExcelで頭は3行を1セルの纏めて、その後が3行になっている表など扱いにくいことこの上もありません。
セルの結合は極力避けるのが、Excelを扱う上では大切だと私は思います。
   
さて、「忌引、出席停止、欠席」をドロップダウンリストから選択すれば、名前、理由が1行で収まります。
http://kokodane.com/kihon17.htm
    
名前の入力さえ間違わなければ、必要に応じて名前で並べ替えを行えばそのまま一覧表になるでしょう。
欠席理由で並べ替えを行えば、こちらも理由の分析ができます。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございました。

お礼日時:2014/04/01 03:24

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