こんにちは、お手数おかけしますが教えてください。
Windows10、Excel2016を使用しています。
添付写真、A1:C23の入力データがあるとします。
そのデータを元にE1:I4の別途表に集計をしたく考えています。
集計したい事は「人ごとの重複を除いた日付の個数」です。
よろしくお願いいたします。
※A~Cの各列は名前の管理にて人・日付・金額として可変で範囲指定しています。
また、A:Cをリストとして可変で範囲指定しています。
※F1:I1は表示形式にてm月としています。入力は2017/3/1というように各月の1日です。
※E1:I4の別途表は3月~翌2月まで続きます。
※人は全部で30人います。
以上、よろしくお願いいたします。
No.1
- 回答日時:
こんばんは!
一案です。
↓の画像のように作業用の列を設けてみてはどうでしょうか?
作業列D2セルに
=IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2)=1,A2&"_"&MONTH(B2),"")
という数式を入れフィルハンドルで下へこれ以上データはない!というくらいまでコピーしておきます。
G2セルに
=COUNTIF($D:$D,$F2&"_"&MONTH(G$1))
という数式を入れ、列・行方向にコピー!
これで画像のような感じになります。
※ 作業列が目障りであれば、遠く離れた列にするか
非表示にしてください。m(_ _)m
No.2ベストアンサー
- 回答日時:
こんばんは。
日付の個数というのは、同じ人が、3/1 が2つあっても、1つと勘定するという意味だと思います。後は、書き出し位置など場所さえ間違えなければ、ちゃんとした計算はされるはずです。
'//標準モジュールに貼り付けてください。
Sub SummaryperPerons()
Dim objDic As Object 'New Scripting.Dictionary
Dim i As Long, j As Long
Dim LastRow As Long
Dim Rng As Range
Dim c As Variant, d As Variant, k As Long, p
Dim arymon, ary
k = 2 'E列書きだし場所
With ActiveSheet
For i = 1 To 12
.Range("E1").Offset(, i).Value = (i + 12 - 11) Mod 12 + 1 & "月"
Next
If .AutoFilterMode = True Then
.AutoFilterMode = False
End If
Set objDic = CreateObject("Scripting.Dictionary")
Set Rng = .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
For Each c In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
If (objDic.Exists(c.Value)) = False Then
objDic.Add c.Value, i
i = i + 1
End If
Next c
ary = objDic.keys
'人名の書き出し
For i = 1 To UBound(ary)
.Cells(i + 1, "E").Value = ary(i - 1)
Next
LastRow = Rng(Rng.Cells.Count).Row
objDic.RemoveAll
ReDim arymon(12) As Integer '月のデータ
Application.ScreenUpdating = False
'日付の集計
For Each p In ary
.AutoFilterMode = False
.Range("A1").Resize(LastRow, 3).AutoFilter
.AutoFilter.Range.AutoFilter _
Field:=1, _
Criteria1:="=" & p
For Each d In .AutoFilter.Range.Columns(2).SpecialCells(xlCellTypeVisible).Cells
d.Select
If VarType(d.Value) = vbDate Then
If (objDic.Exists(d.Value)) = False Then
arymon(Month(d.Value)) = arymon(Month(d.Value)) + 1
objDic.Add d.Value, arymon
i = i + 1
End If
End If
Next
'日付の出力
For i = 1 To UBound(arymon)
j = (i + 12 - 11) Mod 12 + 1 '...3月が1番目の時
Cells(k, "E").Offset(, i).Value = arymon(j)
Next i
Erase arymon
ReDim arymon(12) As Integer
objDic.RemoveAll
k = k + 1
Next
.AutoFilterMode = False
.Range("E1").Select
End With
Application.ScreenUpdating = True
Beep
End Sub
マクロ組んでいただきありがとうございました。
実際にはリストと集計表が別シートだったりするので、
もう少し勉強して実運用できるようにしたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
- Visual Basic(VBA) VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。 6 2023/06/25 11:37
- Excel(エクセル) エクセルの複写について 4 2022/04/10 01:02
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- Excel(エクセル) 出勤簿の土、日、休日に色付けできない 2 2022/08/04 20:10
- Excel(エクセル) Excelでの複数条件のカウントについて 1 2022/09/25 07:40
- Excel(エクセル) 条件付き書式 ある範囲で色がついているセルと同行の別のセルに色を付けたい 4 2022/04/20 07:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
【Microsoft Office Excel Comp...
-
Excelはなんで先頭の0を消すん...
-
Excelのセルを飛ばして入力する
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excelのオートフィル
-
Excel 2019 のピボットテーブル...
-
スプレッドシート クエリ関数 1...
-
excelの不要な行の削除ができな...
-
Excel初心者です。 詳しい方、...
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
EXACT関数とIF関数の組み合わせ...
-
Excelのグラフ軸について
-
スマートな関数を教えて下さい。
-
Excelで全角を半角にしたいので...
-
【マクロ】エクセルにかいてあ...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報