[[20050319015029]] 『範囲指定で水色のセルの行を探し出し』(ちぃ) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『範囲指定で水色のセルの行を探し出し』(ちぃ)

[範囲指定で]

G16からG27のセルの中で水色のセルの行を探し出しそのセル行の一番左のセルのデータをピックアップする式を教えてください

分かりづらいので・・・例
G16〜G27で水色のセルの行を探し出す(ちなみに16-27までで水色は1つしかありません)
そこで例えばG20が水色だとしてその20行目の一番左のセル(A20)にデータがありそこのデータをピップアップしたいんです。
 
XP  EXCEL2000


 標準機能ではセルの背景色やフォント色を基準に計算を行う関数はありません。
「なぜ水色にしてあるのか」というその条件が数式上で表現できるものであれば、
関数でできるかもしれません。また、関数で表現できれば色づけも条件付書式で
自動で行えます。
水色にする理由をココに書くことはできますか?
(みやほりん)


 みやほりんさんが聞いておられるのは、なぜ水色なんですか?ってことではなく、
 水色と黄色に分ける分類が何かの条件を元にしてあるのでしょうか?ってことです。
 例えば 男性が水色で、女性が黄色とか、データで区別できないものでしょうかってことですね。
 水色がひとつとのことですが、それは何を元に色を付けられているのでしょう。

 (川野鮎太郎)


飲食業での調理と接客でシフト上色分けしています。(水色は接客、黄色は調理みたいに)


 色は必ず一つだけでしょうか。
 接客が一つだけなら、Match関数と、INDEX関数の組合せで出すことが出来ます。
 複数の場合は以下のような感じです。
	 A	 B	 C	 D	 E	 F	 G
 16	哀川翔						調理
 17	相田翔子						調理
 18	江口洋介						接客
 19	菊池桃子						調理
 20	黒木瞳						調理
 21	栗田寛一						接客
 22	佐藤藍子						調理
 23	志村ケン						調理
 24	杉山愛						接客
 25	瀬戸朝香						調理
 26	田中裕子						調理
 27	夏目雅子						調理
 28							
 29	接客	調理					
 30	江口洋介	哀川翔					
 31	栗田寛一	相田翔子					
 32	杉山愛	菊池桃子					
 33		黒木瞳					
 34		佐藤藍子					
 35		志村ケン					
 36		瀬戸朝香					
 37		田中裕子					
 38		夏目雅子					
 39							

 A30=IF(COUNTIF($G$16:$G$27,A$29)<ROW()-29,"",INDEX($A$1:$A$27,SMALL(IF($G$16:$G$27=A$29,ROW($G$16:$G$27)),ROWS(A$30:A30)),1))
 として、ShiftキーとCtrlキー押しながら、Enterキーで確定させて配列数式にする。

 (川野鮎太郎)


	 A	 B	 C	 D	 E	 F	 G
 16	哀川翔					(黄色)	調理
 17	相田翔子		(黄色)	(黄色)	(黄色)		調理
 18	江口洋介	(水色)	(水色)	(水色)	(水色)		接客
 19	菊池桃子	(黄色)					調理
 20      近藤真彦                   (水色)  接客

 26  作業(仕込み) 菊池  相田   相田   相田    相田  調理 
 27  作業(レジ)  江口  江口   江口   江口     近藤  接客

上図のように色ついている人が作業の蘭に勝手に割り振られるようにしたいんですが

例えばD26の相田の場合
D16ー20の範囲で水色のセルを探す→D17が黄色と発覚→17行目の人の名前を
ピックアップ(A17)
ってな感じです


 マクロになりますかね。
 以下を標準モジュールに貼り付けてください。
 
Sub Test()
    For Each C In Range("B16:F20")
        Select Case C.Interior.ColorIndex
            Case 6  '黄色
                MyRow = 26  '26行に書き込み
                Cells(MyRow, C.Column).Value = _
                Cells(C.Row, 1).Value
            Case 8  '水色
                MyRow = 27  '27行に書き込み
                Cells(MyRow, C.Column).Value = _
                Cells(C.Row, 1).Value
        End Select
    Next C
End Sub

 カラー番号は以下を参考にどうぞ。

 (川野鮎太郎)


Select Case C.Interior.ColorIndex   3行目
これはC列を指定してるんですか?

上の表の列と行を逆にして↓こんな感じにしたいのですが・・・

	 A	 B	 C	 D	 E	 F	
 16	哀川	相田   江口     菊池   近藤     沢田  
 17	        (黄色)            (水色)	
 18     (黄色)   (水色)   	
 19		        (黄色)					
 20                            (水色)   (黄色) 

 22      調理     両方     調理     接客     接客      調理

 鮎さんのコードを、お借りして、、、
 これで如何でしょう?

 Sub Test2()
    For Each C In Range("A17:F20")
        Select Case C.Interior.ColorIndex
            Case 6  '黄色
                MyRow = 26  '26行に書き込み
                Cells(MyRow, C.Column).Value = _
                Cells(16, C.Column).Value
            Case 8  '水色
                MyRow = 27  '27行に書き込み
                Cells(MyRow, C.Column).Value = _
                Cells(16, C.Column).Value
        End Select
    Next C
End Sub

 (キリキ)


なんかマクロの知識があまりないんですけどこれってマクロじゃなきゃ出来ませんか?

 色での判定ではなく、文字や数値にしてみては?

     A    B    C   D    E    F     
 16 哀川 相田 江口 菊池 近藤 沢田  
 17       ○       □		
 18  ○   □				
 19           ○			
 20                     □   ○
 21
 22 調理 両方 調理 接客 接客 調理
 23
 24
 25
 26 哀川 相田 江口          沢田
 27      相田     菊池 近藤

 ○ → 調理
 □ → 接客

 A26 =IF(COUNTA(A$17:A$21),IF(COUNTIF(A$17:A$21,"○"),A$16,""))
 F26までコピペ
 A27 =IF(COUNTA(A$17:A$21),IF(COUNTIF(A$17:A$21,"□"),A$16,""))
 F27までコピペ

 (キリキ)


シフト表の特性上色で判別したいんですがセル色をイフ文で判定とかって出来ないのでしょうか??

 残念ながら、色を判定する関数はありません・・・

 しかしながら、条件付き書式である条件に対して色を着けることは出来ますので
 1 → 黄色
 2 → 水色
 に設定し、フォントの色をセルの色と同じにすれば文字はでません
 変わりに、色付けが出来ます。

 それを利用し、IF関数で 1 or 2 を判定することは出来ます。
 ※画面上では見えませんが、実際のセルには 1や2 が入っている為

 そうすれば、上記式を
 "○" → 1
 "□" → 2   に、変更すれば出来ると思います。

 (キリキ)

 お邪魔します。↓この中にGET.CELLがあります。作業列を使ってもいいのなら
そこで判断されてはどうですか?
[[20050222100822]]『色が塗られていたら※を出力するには?』(ババンギダ) 
哀川	相田	江口	菊池	近藤	沢田
0	6	0	8	0	0
6	8	0	0	0	0
0	0	6	0	0	0
0	0	0	0	8	6

 調理	両方	調理	接客	接客	調理

 哀川	相田	江口			沢田
 	相田		菊池	近藤	

 A17に
=色
色は挿入→名前の定義で
=GET.CELL(63,Sheet1!A17)
としておきます。
後は、
=IF(OR(SUM(A$17:A$20)=6,SUM(A$17:A$20)=14),A$16,"")
=IF(OR(SUM(A$17:A$20)=8,SUM(A$17:A$20)=14),A$16,"")
(SoulMan)

 SoluManさん、どうも(^_^)

 なるほど〜 そういう方法もあるんですね〜♪
 勉強になります。
 (キリキ)

なるほどソウルマンさんの方法試してみますね

「出勤」「退勤」「休憩1」「休憩2」の欄を作って数値入力すると
出勤した人の時間と対応するセルから退勤にあたる時間のセルまで勝手に背景色を塗って休憩の間は無色っていうこと出来ますか?
さらに色が設定できる設定が出来るようにしたいのですが・・・


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.