
(画像参照)
横に名前、縦に日付の入った表で担当欄(C列)を埋めるVBA等の書き方が分からず困っています。
緑色に色付けしたセルが該当日の担当者を示しています。(4月1日高橋、2日佐藤、3日田中、4日高橋、5日鈴木、6日鈴木、7日田中)
担当欄(C列)に4行目の値(苗字)が返される(D5:G11の範囲のどこかのセルに緑色の塗りつぶしをするとC列に対応する苗字が表示される)ようにしたいのですが、関数やVBAでなにか解決策はありますでしょうか。
13行目は苗字ごとの緑セルの数をColorCountで数えたものです。
こちらの検索値(緑セル)を表の外につくりましたが(B2セル)、ほかに何かいい方法がありましたらそちらも教えて頂けると幸いです。
※colorcountの式は様々なサイトを参照して以下の様に書きましたが、それぞれどのように動いているのかは理解できていません。
Function Colorcount(R1 As Range, C As Range)
Dim r As Range
Application.Volatile
Colorcount = 0
For Each r In R1
If r.Interior.Color = C.Interior.Color Then
Colorcount = Colorcount + 1
End If
Next r
End Function

A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
下の関数を試してみてください。
'[関数]
=GETSTAFFNAME(担当者リスト,塗りつぶしを探すセル範囲,色を指定するセル)
(例)=GETSTAFFNAME($C$4:$F$4,C5:F5,$B$2)
'[機能]
'指定した色で塗りつぶしたセルに対応する担当者名を返す
'[引数]
'R1 担当者の名前が入ったセル範囲
'R2 色付けしてあるセルを探すための対象になるセル範囲
'R3 色を指定するためのセル
Function GETSTAFFNAME(R1 As Range, R2 As Range, R3 As Range) As String
Application.Volatile
Dim r As Range
'対象のセル範囲に含まれるセルを一つ一つ調べる
For Each r In R2
'現在のセルの色が指定した色と同じ場合
If r.Interior.Color = R3.Interior.Color Then
'対応する担当者名を返す
'この関数 = セル(行番号, 列番号).中身
GETSTAFFNAME = Cells(R1.Row, r.Column).Value
'処理を抜ける
Exit Function
End If
Next r '次のセルへ
End Function
No.5
- 回答日時:
色をつけたセルの位置を判別するのは、できるのかもしれませんが困難です。
(少なくとも私には無理)色付けの代わりに何か文字を入力すればよいだけと思います。
自分ならこうするというのを、以下に紹介します。
セルの配置は質問文と同じとします。
添付図参照です。
◆手順
1.色付けされているセルに0(ゼロ)を入力します。
○(マル)とかでもよいのですが、漢数字や記号など類似のものがあるのでゼロがよいです。0なら全角で入力しても半角に修正されます。
2.C5セルに『=OFFSET(C5,MATCH("担当",C:C,0)-ROW(),MATCH(0,D5:G5,0))』を入力して、下方向に必要なところまでコピペします。
3.これで完成です。
※同じ日付に複数入力されていたら、最も左側に入力されているものになります。

No.4
- 回答日時:
No2です
No3様のご意見にまったく同感です。
>私自身VBAの知識は全くなく、~~(通例の関数でしたら理解できます。)
であればなおさらのこと、関数で処理すれば宜しいのでは??
関数での処理が不可能(あるいは難しい)内容であれば、VBAを利用することは妥当だと思いますが、どちらでもできる内容を(理解もできない)VBAで解決しようとすることには疑問です。
とは言え、どのような方法を採用するのかは、質問者様のご自由ではありますけれど・・・
No.3
- 回答日時:
ハナシの腰を折るようですが
知識がないなら ここで得た回答をそのままコピペし、
意図しない処理が行われていても気づかないケースがあるでしょう
サンプルコードを自分の環境に合わせて修正できるスキルが
最低限無いのであれば やめたほうがいいと思います
特に その結果を信用して物事が動くような場合
問題となると思います
そうなっても自身で対応出来ませんよね?
これは実際によく聞くケースです
No.2
- 回答日時:
こんにちは
VBAで処理をなさりたいなら、普通に処理をすれば、該当色のセルをカウントしたり、名前の表示はできるものと思います。
ただし、ご提示の関数ではVolatileに設定しているようですが、シート内のどこかのセルの値を変えないと再計算されませんので、表内のセル色を変えただけでは計算結果に即時反映はされないものと思います。
また、シート内の(表と関係のない)部分の入力に対して、毎回(同じことを)再計算しますので、効率が悪いとも言えます。
以下は、通常の関数のみでも簡単に処理できる、別の方法の一例です。
まず、色の付け方の仕組みを変えます。
(関数ではセルの色は調べられないため)
表内のセルに条件付き書式で、「値(例えば1)を入力したら、文字色、背景色ともに緑色」のような設定をしておきます。
(色を変えるよりも、値を入力・消去する方が操作も簡単ではないかと思います)
上記の仕組みにより、セルに1を入力すればご提示の図の様な表が表示できます。
13行目の集計は、単純にセル範囲の合計を取れば良いので、SUM関数やCOUNT関数で算出できます。
C列の担当者名は、セル位置をMATCH関数やSUMPRODUCT等で調べられますので、これを利用してINDEX関数で算出が可能です。
No.1
- 回答日時:
セルを1つづつ調べていき
緑色だったらカウントを1つ繰り上げる
というコードですが
カウントの結果を表示するものが無いので
これを実行しても何も起きません
また、無用なセルを調べるため 無駄な時間がかかります
調べる範囲は限定すべきです
また、色で判定はあまりいい方法ではありません
入力者が 色付けをする場合
緑色でも 1つではなく いっぱいあり
誤判定に繋がるからです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
このQ&Aを見た人はこんなQ&Aも見ています
-
セルに特定の色が付いていたら計算式を発動したい
Excel(エクセル)
-
Excel VBA で色付きのセルの値を取得する
Excel(エクセル)
-
【Excel】 セルの色での判断はできますか?
Excel(エクセル)
-
-
4
エクセル 背景色のついたセル位置を参考にして固定の数値を取得する
会計ソフト・業務用ソフト
-
5
エクセルの色も=イコールできますか?
Windows Me・NT・2000
-
6
Excelのセルの色を変えた行(すべてのシート)を別シートに抽出したい
Excel(エクセル)
-
7
Excel 書式を関数で判断。
Excel(エクセル)
-
8
excel 参照しているセルに色がついていたら、返すセルにも色もつける
その他(コンピューター・テクノロジー)
-
9
あるセルに色を付けた時、別のセルにも同じ色が付く
Excel(エクセル)
-
10
エクセルで隣(右or左)のセルと同じ文字色にしたい
Excel(エクセル)
-
11
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
12
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
13
【Excel】色が付いているセルの値をクリアしたい
Excel(エクセル)
-
14
エクセルで色の付いたセルを抽出したいです
Excel(エクセル)
-
15
背景色の有無を判断をして別のセルに「1」と入力
Excel(エクセル)
-
16
文字の色も参照 VLOOKUP
Access(アクセス)
-
17
excelのデータで色つき行の抽出方について教えてください
Excel(エクセル)
-
18
色のついたセルにフラグを立たせることはできるでしょうか?
Word(ワード)
-
19
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
20
特定の色のついたセルを削除
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
エクセル
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】A列にある、日付(本...
-
エクセルの循環参照、?
-
【マクロ】3行に上から下に並...
-
【マクロ】WEBシステムから保存...
-
【マクロ】EXCELで読込したCSV...
-
iPhoneのExcelアプリで、別のシ...
-
【エクセル】期限アラートについて
-
【条件付き書式】シートの中で...
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
派遣会社とかハローワークとか...
-
マクロ・VBAで、当該ファイルの...
-
VBA チェックボックスをオーバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報
説明不足で申し訳ございません。
私自身VBAの知識は全くなく、設定している関数がどのように動いているか、どこがどう不自然なのかも見当がつきません。(通例の関数でしたら理解できます。)
具体的にどのような関数をどのように並べて用いるべきか、VBAの書き方など例示していただけると非常に心強いです。
業務の効率化のためなのですが、色付けでの判断は変更ができずこのような形になっております。
厚かましいお願いにはなりますがよろしくお願い致します。