[[20050725110942]] 『在庫場所の空〜塗りつぶし〜』(初心者18) >>BOT

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

 

『在庫場所の空〜塗りつぶし〜』(初心者18)

Sheet1(一覧)

  A      B        C       D

1 商品名    数量   入荷日 在庫場所

2 資材      1    7/2     1-1

3 サンプル    2    7/5    4-2

4 資材      1    7/7     2-1 

Sheet2(在庫場所)

   A   B   C   D...
1 1-1 1-2 1-3 1-4...
2 2-1 2-2 2-3 2-4...
3 3-1 3-2 3-3 3-4...
4 4-1 4-2 4-3 4-4...

上記の様にSheet1に在庫の詳細、Sheet2に在庫場所の番号を作成します。
在庫場所を使用している時にSheet2の在庫場所の番号を赤で塗りつぶしたいのですがどうしたらいいのかがわかりません。初心者で過去のログ等を拝見したのですが当てはまるものがわからず投稿させていただきました。
Excel2003 WindowsXP です。よろしくお願いいたします。


 Sheet1のD列の値がSheet2にあったら、色を塗るとういうことでしたら
Findを使われてはどうでしょうか?
Option Explicit
Sub てすと()
Dim C As Range
Dim MyStr As String
Dim i As Long
Sheets("Sheet2").Cells.Interior.ColorIndex = xlNone
With Sheets("Sheet1")
    For i = 2 To .Range("D65536").End(xlUp).Row
        MyStr = .Cells(i, 4).Value
        Set C = Sheets("Sheet2").Cells.Find(MyStr, , xlValues, xlWhole, xlByRows, xlNext, True)
        If Not C Is Nothing Then
            C.Interior.ColorIndex = 3
        End If
    Next
End With
Set C = Nothing
End Sub
(SoulMan)

 衝突しましたが、条件付き書式でも出来そうです。

 まず、Sheet1のC2:C4に名前をつけます。
(ここでは仮に「在庫場所」名前をつけたものとしておきます)

 次に、Sheet2のA1:D4を範囲選択し、書式の条件付き書式で、
 「数式が」を選択し、その右に =COUNTIF(在庫場所,A1)>0 と入力、
 「書式」をクリックして適当な塗りつぶしを選択します。

 条件付き書式でのセル参照は同一シート内しかできませんので、
 別シートを参照する場合は、このように範囲に名前をつけることになります。
 (sato)

SoulMan様 sato様 早速のご回答ありがとうございました。

SoulMan様のご回答をそのままコピペさせていただきました。私の希望通りの結果が出ました。感動です。ですが、私にはSoulMan様が解答していただいたVBA(?)の意味が理解できません。簡単にで結構なのでお手数をお掛けして恐縮なのですが少しご説明お願いできませんでしょうか?

sato様のご解答を試みたのですが座席番号が全て塗りつぶしされてしまいました。それでご質問したいのですが =countif(在庫場所、A1)>0 の>0とはどういう意味になるのでしょうか?


 条件付書式の数式では、同一シートでも!が、いけないので、
 条件付書式が、!が嫌いなだけのようにも思います。

 =COUNTIF(INDIRECT("Sheet1!$D$1:$D4"),A1)などとする方法でもOKでしょう?   (LOOKUP)

 >条件付書式が、!が嫌いなだけのようにも思います。
 そうだったんですか。
 私も以前から別シートの参照が出来ないとメッセージがでるのに、
 名前で参照するとできるのが不思議だとは思ってたんですよ。
 いつもながら、LOOKUPさんのご指摘には感服いたします。

 >=countif(在庫場所、A1)>0 の>0とはどういう意味になるのでしょうか?
 文字通り、A1の値が範囲「在庫場所」にいくつあるか数えて、
 その数がゼロより大きかったら・・・という意味です。
 最後の >0 はなくても同じことになると思いますが、
 あったほうが分かりやすいと思ってあえてつけてみました。

 >座席番号が全て塗りつぶしされてしまいました
 こちらの検証では「在庫場所」に入力したものだけが塗りつぶされています。
 条件付き書式の内容をもう一度確認していただけませんか。
 (sato)

LOOKUP様 sato様 ご解答ありがとうございます。出来ました!「条件付き書式」初体験いたしました。お勉強になります。またご指導のほどよろしくお願いいたします。


 説明なんてほどのもんじゃないですけどね。
Findは編集→検索を記録したものを加工したのもです。
MyStrという変数を検索値に使ってます。1-2とか4-2とかです。
それをCという変数に代入してあったら(Nothingじゃなかったら)
C.Interior.ColorIndex = 3
色を付けるというものです。
で、これを
For
処理
Nextでループして繰り返しているんですね。
だから、検索値が2-4とか1-2とかに変化していくんですね。
わかりましたでしょうか?
でも、今回の場合でしたら、条件付き書式の方がいいかもしれませんね。
まぁ、参考程度にということで、、、
(SoulMan)


 なぜ、この古いトピが【age】られたんでしょうねぇ?
 更新時刻が 8:13 になっていて、「差分」でみたんですが、どこにも変更の跡がない。
 としたら、誰かが、編集で開いて そのまま 「更新」?

 なんのために、そうするんでしょうねぇ?

 どうでもいいことですけど。

(β) 2015/07/26(日) 08:22


コメント返信:

[ 一覧(最新更新順) ]


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