[[20130206132447]] 『条件付き書式で最新の情報を得たい』(n-_8h) ページの最後に飛ぶ

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

 

『条件付き書式で最新の情報を得たい』(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)

ありがとうございました。Lookupという関数を入れるんですね。初めてみました。
これで、毎月の業務から解放されます。
(n-_8h)

こんにちは。お世話になります。
教えていただいたような関数をいれてみたりしたのですが、最初は、うまくいっていたのですが、うまくい場合があることがわかりました。

たとえば、
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)

お忙しい中、ありがとうございます。
最後のものを入れてみたのですが、「E」とはなるのですが、それ以外には変わりません。
やはり、無理なのでしょうか?

(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

 (ぶらっと)

ありがとうございます。半平太さんの式をいただいて、いろいろ試してみたいと思います。
B2に入れた後は、下にコピーすればいいんですよね?

皆さま、お忙しい中、お時間作っていただき、ありがとうございました。

(n-_8h)


コメント返信:

[ 一覧(最新更新順) ]


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