[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『色付きセルにロット番号を振り分けて」行く方法』(ニシポン)
早速ですが、要約にも書きましたが、シート内で条件付き書式で色を付けたセル
に他の欄に入力したロット番号を順番に振分ていく方法が分かりません。どなたか教えていただけないでしょうか?
黄色セル 300524-1 300525-2 300526-1
色なし
色なし
黄色セル 300526-2
ロット番号
300524-1
300525-2
300526-1
300526-2
< 使用 Excel:Excel2013、使用 OS:Windows10 >
>・・シート内で条件付き書式で色を付けたセル >に他の欄に入力したロット番号を順番に振分ていく・・
へぇー、これは新種(の質問)ですね!
どんな条件付き書式で色を付けているんですか? 黄色限定なんですか? 3列が埋まると次の行に移るんですか?
(半平太) 2018/05/27(日) 09:52
>3列が埋まると次の行に移るんですか?
そんなんじゃなく、条件付き書式の色が付いているのは左端じゃなく、 当該3セルに色が付いているんですか?
(半平太) 2018/05/27(日) 10:04
(γ) 2018/05/27(日) 10:06
Q1)、Q2)色の条件付き書式は出荷数に応じて色を付けます。黄色にこだわってはいません。
例えば、出荷数3であれば、3マス色が付くという事です。他のセルに入力していた製造ロット
を色の付いたセルに順番に振り分けていくという事です。条件付き書式の結果には影響が及ぼしません。
出荷数 出荷累計 進捗
0 0 0
3 3 完了 300425-2 300525-2 300426-1 0 3 0
0 3 0
1 4 完了 300526-2
宜しくお願い申し上げます。
(ニシポン) 2018/05/27(日) 21:50
(γ) 2018/05/27(日) 22:14
上記で触れたDisplayFormatの使用例を参考までに。
Sub test() Dim myLot As Range Dim r As Range Dim k As Long
Set myLot = Range("A1:A5") 'ロット番号のあるセル範囲 あくまで例です。 k = 1 For Each r In Selection 'Range("") '対象範囲を走査 If isColored(r) Then r.Value = myLot(k) k = k + 1 End If Next End Sub
Function isColored(r As Range) As Boolean '色がついていればTrueを返す isColored = r.DisplayFormat.Interior.Color <> RGB(255, 255, 255) End Function
条件付き書式だけでなく、手でつけた色も対象となることに注意。
DisplayFormatというプロパティは2010から入った機能です。 このプロパティが導入されるまでは、条件付き書式の色を取得するのは結構大変でした。 条件そのものを取り出して、逐一、結果を算定する方法が一般的でしたが、 色々な条件指定のパターンがあるので、網羅するのは結構面倒な作業でした。 加えて、Excel2007では、仕様変更とバグの為、この類の手法はかなり面倒な事になりました。 Wordに一旦貼り付けるという方法を提案したりもし、議論がありました。(今は昔)
2010からは上記機能が導入され、そのあたりの議論は不要になりました。 注意点は、ユーザー定義関数ではDisplayFormatの機能が使えないことですね。 ユーザー定義関数はあくまで「副作用」は許さない、というポリシーなのでしょう。
(γ) 2018/05/28(月) 07:08
(ニシポン) 2018/05/28(月) 20:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.