[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件付き書式で最新の情報を得たい』(n-_8h)
いつも拝見し、大変勉強になります。解決できたらいいなぁと思っていることがあり、
こちらへ投稿させていただきます。ご教授ください。
商品管理をしています。商品は、全部で5種類。色の塗りつぶしで管理しています。
A商品=赤、B商品=青、C商品=黄、D商品=緑、E商品=オレンジ
商品の数は、増えることはありません。
お客様の購入した日にその商品の色を塗って管理をしているのですが、直近2回に買った商品が何であるか、わかるようにしたいのです。
A B C D E F G H I〜AF AG
1 顧客名 直近商品 1日 2日 3日 4日 5日 6日 7日〜31日 購入回数
2 あ様 黄色 A B C B A C 6
3 い様 オレンジ C E E A 4
4 う様 ぬらない B 1
最新情報が欲しいので、日付は後ろの日から追っていき、「あ様」の場合は、Cの黄になります。「う様」のように2回購入してない場合は、塗りつぶしが無い状態にしたいです。
購入回数には、countif関数で購入回数を表示しています。
顧客名が100名ほどいるので、毎回自分で見て色を塗っていますが、時間がかなり取られてしまいます。何かいい案がありますでしょうか?
エクセル2007です。
B2 =IF(COUNTA(C2:AG2)>1,LOOKUP(1,0/(C2:AG2<>""),C2:AG2),"")
下へコピー。
B列条件付書式設定。
※商品名が本当に「ABCDE」なら
B2 =IF(COUNTA(C2:AG2)>1,RIGHT(PHONETIC(C2:AG2)),"")
でも
(GobGob)
たとえば、
1 2 3 4 5 6 7 8 9 10 11 12
A B C D E D C A A E E D
となった場合、「E」と表示させたいのですが、「D」と表示されてしまいます。
商品は、「ABCDE」です。
関数での処理は無理なのでしょうか・・・
再度、ご教授いただければ幸いです。
A B C D E F G H I J K L 1 1 2 3 4 5 6 7 8 9 10 11 12 2 A B C D E D C A A E E D 3
A2:L2範囲が対象なら 「D」でいいんじゃないの?
(GobGob)
最初っから勘違いしてたね・・・・。
一番最初の表で回答。
B2 =IF(SUMPRODUCT(COUNTIF(C2:AG2,C2:AG2))=COUNTA(C2:AG2),"",LOOKUP(1,0/(COUNTIF(C2:AG2,C2:AG2)>1),C2:AG2))
下へコピー。
※直近で2回「以上」購入した事のある商品を抽出。
(GobGob)
ん〜。さらに勘違いっぽいかも・・・。
自信ないけど
B2 =IF(SUMPRODUCT(COUNTIF(C2:AG2,C2:AG2)*(C2:AG2<>""))=COUNTIF(C2:AG2,"*?"),"", INDEX(C2:AG2,MATCH(MAX(INDEX(MATCH(C2:AG2&"",C2:AG2&"",)*(COUNTIF(C2:AG2,C2:AG2)>1)*(C2:AG2<>""),)), INDEX(MATCH(C2:AG2&"",C2:AG2&"",)*(COUNTIF(C2:AG2,C2:AG2)>1)*(C2:AG2<>""),),))&"")
※2回以上で、1回目が一番遅いものを抽出
(GobGob)
(n-_8h)
直近2回の基準がイマイチわからないんだけど。。。
01 02 03 04 05 06 07 08 09 10 11 @ A B A B A B A B A B A A B B C D C D D C A B A A A A B A A A A B C A B C D E F G H I J D A A A A A A A A B B E A A A A A A C B B C
@〜Eは「何が抽出されて」「なぜそれが抽出されるのか?」を 説明してもらえますかねぇ・・・
(GobGob)
@・・B
A・・D
B・・A
C・・なし
D・・B
E・・B
となります。
もし、仮に11の@の欄に、「A」と入力したら、@・・Aに変わります。
1行目の01から11は、日にちです。後ろの日から数えていって、後ろから数えて、2回でてくる商品が欲しいのです。
(n-_8h)
ヨコから失礼。
ということは
>直近2回に買った商品が何であるか
は、文章の間違いで
【直近、2回以上買った商品は何であるか】だね?
だとすると関数でできるのかなぁ・・・・
(ぶらっと)
(n-_8h)
>商品の数は、増えることはありません。 >商品は、「ABCDE」です。
5個しかないので、力技案。
B2セル =IF(OR(COUNTIF(C2:L2,{"A","B","C","D","E"})>1),INDEX(2:2,MAX(LARGE((C2:N2="A")*COLUMN(C:N),2),LARGE((C2:N2="B")*COLUMN(C:N),2),LARGE((C2:N2="C")*COLUMN(C:N),2),LARGE((C2:N2="D")*COLUMN(C:N),2),LARGE((C2:N2="E")*COLUMN(C:N),2))),"") ※配列数式:Ctrl+Shiftキーを押しながら、Enterキー押下で、数式の入力を確定する
<結果図> 行 ___A___ ____B____ _C_ _D_ _E_ _F_ _G_ _H_ _I_ _J_ _K_ __L__ __M__ __N__ 1 顧客名 直近商品 1日 2日 3日 4日 5日 6日 7日 8日 9日 10日 11日 12日 2 あ様 A A B A B A B A B A B A 3 D A B B C D C D D C A 4 A A A A A B A A A A B 5 A B C D E F G H I J 6 B A A A A A A A A B B 7 B A A A A A A C B B C
(半平太) 2013/02/12(Tue) 21:11
VBAはお呼びじゃないと思うけど参考出品
Sub Sample() Const myOrange As Long = 39423 Dim r As Range Dim x As Long Dim bingo As String Dim myColor As Long
Columns("B").Interior.ColorIndex = xlNone With Range("A1").CurrentRegion.Columns("C:AG") For Each r In .Resize(.Rows.Count - 1).Offset(1).Rows bingo = "" For x = r.Cells.Count To 2 Step -1 If Len(r.Cells(x).Value) > 0 And r.Cells(x).Value = r.Cells(x - 1).Value Then bingo = r.Cells(x).Value Exit For End If Next myColor = 0 Select Case bingo Case "A" myColor = vbRed Case "B" myColor = vbBlue Case "C" myColor = vbYellow Case "D" myColor = vbGreen Case "E" myColor = myOrange End Select If myColor <> 0 Then r.EntireRow.Range("B1").Interior.Color = myColor Next End With
End Sub
(ぶらっと)
皆さま、お忙しい中、お時間作っていただき、ありがとうございました。
(n-_8h)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.