Excel (VBA) |
![]() ![]() |
(Windows 10 Home : Microsoft 365)
Interior.ColorIndexのカウントについて
投稿日時: 22/09/25 15:40:29
投稿者: BILLIKEN
|
---|---|
いつもお世話になります。
|
![]() |
投稿日時: 22/09/25 16:40:27
投稿者: simple
|
---|---|
こんにちは。
|
![]() |
投稿日時: 22/09/25 18:28:09
投稿者: WinArrow
|
---|---|
提案
|
![]() |
投稿日時: 22/09/25 19:08:16
投稿者: BILLIKEN
|
---|---|
simpleさん
|
![]() |
投稿日時: 22/09/25 19:19:25
投稿者: BILLIKEN
|
---|---|
simpleさん
|
![]() |
投稿日時: 22/09/25 19:30:48
投稿者: simple
|
---|---|
# 行き違いでコメントがあったようです。
Sub main() Call myCount("1月", 2) Call myCount("2月", 3) ' 以下同様。 ' これも、繰り返し構文を使って、数行で書くこともできるでしょう。 End Sub Function myCount(対象シート名 As String, r As Long) ' r : 結果を書き出す集計シートの列番号 Dim ws As Worksheet Dim rng As Range Dim red_cnt As Long, yellow_cnt As Long Set ws = Worksheets(対象シート名) For Each rng In ws.Range("D5:J8") '例示そのままです。 Select Case rng.Interior.ColorIndex Case 3 '赤 red_cnt = red_cnt + 1 Case 6 '黄 yellow_cnt = yellow_cnt + 1 End Select Next rng Worksheets("集計シート").Cells(1, r) = red_cnt Worksheets("集計シート").Cells(2, r) = yellow_cnt '色無しについても、計算、転記は可能でしょう。そちらで検討してください。 End Function # 考え方の理解のためのものなので、動作確認はしていません。悪しからずご了解願います。 |
![]() |
投稿日時: 22/09/25 20:19:23
投稿者: simple
|
---|---|
改めてご返答を拝見しました。ご苦労様でした。
|
![]() |
投稿日時: 22/09/26 10:24:02
投稿者: Suzu
|
---|---|
WinArrow さん からも既に提案ありますが、
引用: との事ですから、個別シートに そのシート毎の集計表を持たせて良いのであれば かなり簡単かと。 1. 各月の入力シート ・セルに色をつけていたセルには、条件付き書式を用い、 入力値により、セルの背景/フォント色 を変える様にする ・当月の集計をシート内で行う ・ ユーザーには、色ではなく 数値を入力してもらう様にします。 2. まとめ シート 各月のシートの集計値を参照させる Ex) --------------------------------------------------------------------------------- 入力シート A B C D E F G 1 1 黄 2 2 2 赤 6 3 3 色なし 240 4 5 2022 6 2 1時間 2時間 3時間 7 1 1 火 1 2 8 2 2 水 2 2 2 9 3 3 木 2 2 1 10 4 4 金 11 5 5 土 12 6 6 日 : : : C7 =DATE(B$5,B$6,A7) C34までフィル C35 =IF(MONTH(DATE(B$5,B$6,1))=MONTH(DATE(B$5,B$6,A35)),DATE(B$5,B$6,A35),"") C37までフィル C7:C37 セル書式設定 ユーザー定義「d」 D7 =C7 D37までフィル D7:D37 セル書式設定 ユーザー定義「aaa」 E1:=COUNTIF($E$7:$L$37,1) E2:=COUNTIF($E$7:$L$37,2) E3:=COUNTBLANK(E7:L37) 条件付き書式 適用先:=$E$7:$L$37 1)セルの値 次の値に等しい =2 : フォント/塗りつぶし 赤 2)セルの値 次の値に等しい =1 : フォント/塗りつぶし 黄 --------------------------------------------------------------------------------- (B5 年入力 、B6 月入力 で万年カレンダー です。 必要なら D列とE列の間に 休日を示す 列を挿入しても良いでしょう) 入力シートをテンプレートとして 4〜12,1,2,3 の各月のシートを作成(月の値のみのシート) -------------------------------------------------------------------------------- まとめシート A B C D E F G H I J K L M 1 4 5 6 7 8 9 10 11 12 1 2 3 2 黄 3 赤 4 色なし : B2 : =INDIRECT(B$1&"!E1") B3 : =INDIRECT(B$1&"!E2") B4 : =INDIRECT(B$1&"!E3") B2:B4 選択し、M列までフィル B1:M1 セルの書式設定【0"月"】 -------------------------------------------------------------------------------- 揮発関数 INDIRECT を使っているのでブックを開くたびに再計算されてしまいますが VBA を使わなくとも 良くなります。 揮発関数を使わずとも、 B2〜M2 に、 『='4'!E1』『='5'!E1』〜『='3'E1』 を入力 4行目までフィルすれば INDIRECTは不要ですね。 |
![]() |
投稿日時: 22/09/26 19:41:47
投稿者: BILLIKEN
|
---|---|
simpleさん WinArrowさん Suzuさん
|