advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 29 for 』(エクセル) (0.013 sec.)
[[20040705141048]]
#score: 15826
@digest: f8a8e658c60f0e9bac8594cf04eec749
@id: 7536
@mdate: 2004-07-08T08:37:07Z
@size: 10557
@type: text/plain
#keywords: res1 (46907), 欠表 (28342), 朝倉 (22510), 出欠 (19737), 忌引 (19108), wst (18427), 欠状 (17684), 欠席 (14313), ス別 (11826), 内田 (11698), 児童 (9702), 各ク (9527), かぜ (8988), a65536 (6683), 学年 (5618), 力" (4609), クラ (3597), 伊藤 (3245), 年2 (3104), cells (3049), 生徒 (3035), xltoleft (3027), 年1 (2895), 更可 (2805), ラス (2699), ス名 (2467), activate (2105), 渡辺 (2017), integer (1945), 右方 (1724), formular1c1 (1636), sheets (1633)
『児童の出欠表の作成 検索 集計表の作成』(エクセル初心者?)
[児童の出欠表の作成と、検索・集計結果表の作成方法] 学校の児童の出欠表を作ろうと思うのですが、 どのようにしたらよろしいでしょうか。お教えください。 今ある表は、次のとおりです。 4/1 4/2 4/3 ・・・ 4/30 朝倉 かぜ かぜ 伊藤 かぜかぜ 内田 けが ・ ・ ・ 渡辺 忌引 表の意味は、 朝倉は、4/1と4/30に「かぜ」で欠席した。 伊藤は、4/2と4/3に「かぜ」で欠席した。 内田は、4/3に「けが」で欠席した。 渡辺は、4/1に「忌引」で欠席した。 と言う意味です。 1番目の質問は、 この表の形式だと、それぞれの学年のシート「1年1組」「1年2組」・・・「6年2組」を用意し、月が変わると別のシートにすることになるので、(横に365日分は並べられなかったので)、6学年×2組×12ヶ月=144枚のシートがいることになりますが、何かシートの枚数を減らす良い工夫はないでしょうか? ということです。 2番目の質問は、 先の出欠表から次のような2つの表を作りたいのですが、 作り方がわかりませんので、教えてください。 月別・クラス別出欠表(月とクラスを選ぶと以下の表が出てくる) 4月 1年1組 朝倉 4/1 4/30 かぜ かぜ 伊藤 4/2 4/3 かぜ かぜ 内田 4/3 けが 渡辺 4/1 忌引 今日の出欠状況表(日にちを入力すると次の表が出てくる) 4月1日 出欠状況 1年1組 1年2組 ・・・ 6年2組 計 かぜ 1 1 けが 1 2 3 ・ ・ ・ 忌引 1 計 2 1 2 4 vlookup関数やそのほかの検索関数、 ピボットテーブルあたりを使うとできそうな気がするのですが、 作り方がわかりません。 大変お手数をおかけしますが、よろしくお願いいたします。 なお、Excel2003,WindowsXPです。 ---- こんにちわ まず一番目の問題をクリアしませんと、数式でもマクロでも回答しにくい と思います。 そこで、 1.縦と横を逆にする この場合一学年の児童数が256に達するのであれば不可能ですが。 2.各季節休み、土日、祝祭日等、削除して256以内にスリム化する。 等、いずれにしても144枚のシートを操るよりはるかに楽だと思いますが。 (jindon) ---- ご回答ありがとうございます。 2番の土日などを削除して256以内にして、 6学年×2組=12枚のシートになっているという前提で よろしくお願い致します。 ---- 参考になるかわかりませんが、私が作るならこうするかな? まずSheet1のSheet名を『1年1組』の様にクラス名にする。 シートのレイアウトは、 A B C D E 1 月 日付 欠席人数 朝倉 伊藤 ←仮にD1:AA1 に生徒名とする 2 合計 3 1 1 3 4 2004/4/1 1 かぜ 4 4 2004/4/2 A3: =MONTH(B3) で下方向にコピー B3: 手入力 で下方向に連続データ作成(1年度分) C2: =SUBTOTAL(2,C$3:C$368) ※行範囲(日付)は変更可 C3: =IF(COUNTA($D3:$AA3),COUNTA($D3:$AA3),"") で下方コピー ※列範囲(生徒数)は変更可 D2: =SUBTOTAL(3,D$3:D$368) で右方向にコピー 該当日(行)の該当生徒(列)に欠席理由を入力。 上記のシートをコピーして各クラス分のシートを作成し、Sheet名を変更する。 ※数字の半角全角は、揃えておく(覚えておく)=あとで必要。 ◆月別・クラス別出欠表に関しては、 各クラスのシートにおいて、オートフィルターを使用。 A列で(オプション)- 合計 と等しい OR 4 と等しい ※まとめたい月を選択 C列で(空白以外のセル) →これで代用出来ませんか? ←大変な事になりそうなので、これで妥協してください。 ◆今日の出欠状況表 (別シートを作成) A1: =TODAY() D1: =MATCH(A1,'1年1組'!$B$1:$B$368,FALSE) ※今日が何行目かを探す B2より右方向に各クラス名を入力。(※シート名と同じにする) A3より下方向に理由 B3: =COUNTIF(INDIRECT(B$2&"!B"&$D$1&":Z"&$D$1),$A3) 必要範囲にコピー 計は、SUM関数で入れてください。 いかがでしょう? 追加質問等に関しては、返答が遅くなるかも知れません。(外出中・考え中) (sin) ---- 一応動いたのですが.... 各シート1行目の日付は半角の「日付」にしてください。 両マクロとも「集計」シートに結果を表示しますのでシートが無い場合は用意してください。 Alt+F11→画面左側「ThisWorkbook」 をダブルクリック→右側空白部分に下記コードをコピー+ペースト 実行は Alt+F8→該当マクロ名選択→実行です。 (jindon) Sub クラス別() Dim i As Integer, ii As Integer, iii As Integer, wsT As Worksheet, _ res1 As Variant, res2 As Integer, c1 As Integer, c2 As Integer, Rng1 As Range Set wsT = Sheets("集計") On Error Resume Next Application.ScreenUpdating = False res1 = InputBox("クラス名を入力" & Chr(10) & Chr(10) & "シート名と同じにして下さい。") res2 = InputBox("該当月を入力" & Chr(10) & Chr(10) & "半角数字を使用して下さい。") With wsT .Activate .Cells.Clear .Range("A1").Value = res2 & "月分" .Range("B1").Value = res1 End With With Sheets(res1) For i = 2 To 255 If Month(.Cells(1, i).Value) = res2 Then c1 = .Cells(1, i).Column Exit For End If Next For i = 255 To 2 Step -1 If Month(.Cells(1, i).Value) = res2 Then c2 = .Cells(1, i).Column Exit For End If Next .Activate If WorksheetFunction.CountA(Range(Cells(2, c1), Cells(60, c2))) = 0 Then MsgBox "欠席者はいません" wsT.Cells.Clear Set wsT = Nothing Application.ScreenUpdating = True Exit Sub End If End With i = 2 Do While Sheets(res1).Cells(i, 1) <> "" Set Rng1 = Range(Cells(i, c1), Cells(i, c2)) If WorksheetFunction.CountA(Rng1) > 0 Then wsT.Activate If wsT.Range("A65536").End(xlUp).Row + 2 = 3 Then wsT.Cells(Range("A65536").End(xlUp).Row + 1, 1).Value = _ Sheets(res1).Cells(i, 1).Value Else wsT.Cells(Range("A65536").End(xlUp).Row + 2, 1).Value = _ Sheets(res1).Cells(i, 1).Value End If Sheets(res1).Activate End If i = i + 1 Loop With wsT For i = 2 To Range("A65536").End(xlUp).Row If Cells(i, 1).Value <> "" Then For ii = 2 To Range("A65536").End(xlUp).Row If Sheets(res1).Cells(ii, 1).Value = .Cells(i, 1).Value Then For iii = c1 To c2 If Sheets(res1).Cells(ii, iii).Value <> "" Then .Cells(i, .Range("IV" & i).End(xlToLeft).Column + 1).Value _ = Sheets(res1).Cells(1, iii).Value .Cells(i, .Range("IV" & i).End(xlToLeft).Column).NumberFormatLocal _ = "d日 aaa" .Cells(i, .Range("IV" & i).End(xlToLeft).Column).Offset(1, 0).Value _ = Sheets(res1).Cells(ii, iii).Value End If Next End If Next End If Next ii = .Cells(1, 1).CurrentRegion.Columns.Count + 1 For i = 2 To .Range("A65536").End(xlUp).Row If .Cells(i, 1).Value <> "" Then .Cells(i, ii).Offset(1, 0).FormulaR1C1 = _ "=R[-1]C1&""-""&COUNTA(RC1:RC[-1])&""日""" End If Next .Select .Range("A1").Select End With Set wsT = Nothing Set Rng1 = Nothing Application.ScreenUpdating = True End Sub Sub 日付別() Dim i As Integer, ii As Integer, ws As Worksheet, wsT As Worksheet, res1 As Date, _ lastA As Integer Set wsT = Sheets("集計") On Error Resume Next Application.ScreenUpdating = False res1 = InputBox("日付の入力" & Chr(10) & Chr(10) & "例: 2004/12/31") wsT.Cells.Clear For Each ws In Sheets If ws.Name <> wsT.Name Then ws.Activate For i = 2 To 256 If ws.Cells(1, i).Value = res1 Then lastA = Range("A65536").End(xlUp).Row If WorksheetFunction.CountA(Range(Cells(2, i), Cells(lastA, i))) = 0 Then Exit For For ii = 2 To lastA If ws.Cells(ii, i).Value <> "" Then wsT.Activate wsT.Cells(Range("B65536").End(xlUp).Row + 1, 2).Value = _ ws.Cells(ii, i).Value ws.Activate End If Next End If Next End If Next With wsT .Activate If Cells(2, 2).Value = "" Then MsgBox ("欠席者はいません") Set wsT = Nothing Application.ScreenUpdating = True Exit Sub End If .Range("B2:B" & Range("B65536").End(xlUp).Row).Select Selection.Sort Key1:=Range("B2"), Order1:=xlAscending .Range("B2").Copy Destination:=.Range("A2") For i = 2 To .Range("B65536").End(xlUp).Row If .Cells(i, 2).Value <> .Cells(Range("A65536").End(xlUp).Row, 1).Value Then .Cells(Range("A65536").End(xlUp).Row + 1, 1).Value = _ .Cells(i, 2).Value End If Next .Columns(2).Clear For i = 1 To Sheets.Count If Sheets(i).Name <> .Name Then .Cells(1, Range("IV1").End(xlToLeft).Column + 1).Value = _ Sheets(i).Name End If Next With .Cells(1, 1) .Value = res1 .NumberFormatLocal = "m月d日" End With With .Cells(2, 2) .FormulaR1C1 = _ "=IF(COUNTIF(OFFSET(INDIRECT(R1C&""!""&ADDRESS(2,MATCH(R1C1,INDIRECT(R1C&""!1:1""),0))),,,59,),RC1)=0,""-"",COUNTIF(OFFSET(INDIRECT(R1C&""!""&ADDRESS(2,MATCH(R1C1,INDIRECT(R1C&""!1:1""),0))),,,59,),RC1))" .Copy End With .Range(Cells(2, 2), Cells(Range("A65536").End(xlUp).Row, _ Range("IV1").End(xlToLeft).Column)).PasteSpecial xlFormulas Application.CutCopyMode = False .Cells(Range("A65536").End(xlUp).Row + 1, 1).Value = "合計" With .Cells(Range("A65536").End(xlUp).Row, 2) .FormulaR1C1 = "=IF(SUM(R2C:R[-1]C)=0,""-"",SUM(R2C:R[-1]C))" .Copy End With .Range(Cells(Range("A65536").End(xlUp).Row, 3), _ Cells(Range("A65536").End(xlUp).Row, _ Range("IV1").End(xlToLeft).Column)).PasteSpecial xlFormulas Application.CutCopyMode = False .Columns("A:M").Select With Selection .AutoFit .HorizontalAlignment = xlCenter End With End With Range("A1").Select Set wsT = Nothing Application.ScreenUpdating = True End Sub ---- sin様、jindon様、 本当にありがとうございます。 お陰様で無事に集計表を作ることができました。 sin様の関数を用いた方法と、 jindan様のVBAを用いた方法。 とてもいい勉強になりました。感謝です。 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200407/20040705141048.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97050 documents and 608253 words.

訪問者:カウンタValid HTML 4.01 Transitional