『条件付き書式について質問です。』(masa@)
お世話になります。
条件付き書式について質問です。_
下図の様に1行目の文字とH 列の文字が
一致した(下図では B と D )の縦列を1〜10行
まで塗りつぶす書式ありますでしょうか。
__________________________________ _______ |_[A]_|__[B]_|__[C]_|_[D]__|__[E]_| |_[H]_| [1] |山田 | 田中 | 佐藤 | 鈴木 | 山本 | |_____| [2] |_____|______|______|______|______| |_____| [3] |_____|______|______|______|______| |田中_| [4] |_____|______|______|______|______| |_____| [5] |_____|______|______|______|______| |_____| [6] |_____|______|______|______|______| |鈴木_| [7] |_____|______|______|______|______| |_____| [8] |_____|______|______|______|______| |_____| [9] |_____|______|______|______|______| |_____| [10]|_____|______|______|______|______| |_____|
< 使用 Excel:Excel2010、使用 OS:Windows11 >
A1:E10を適用範囲にして、 条件式は、 =ISNUMBER(MATCH(A$1,$H$1:$H$10,0)) 書式はお好みで。 (xyz) 2025/03/03(月) 16:03:26
しかしながらうまく動作しません。
H1に1つだけの入力ではうまくいきますが
H2以降に複数入力しますとおかしくなります。
方法ありますでしょうか?
よろしくお願いいたします。
(masa@) 2025/03/03(月) 18:25:53
ちょっと想像がつかないです。私はうまくいくことを確認したうえで投稿しています。 こちらの書いたとおりの絶対参照、相対参照にしていますか? もう一度確認してください。
不明なら、条件付き書式に設定した条件式をコピーペイストして こちらに投稿してもらえますか?
(xyz) 2025/03/03(月) 19:07:41
このように H列に1,3,5と3つ入力すると
のようになります。
の様にしたいのですが、丸コピペではダメなのでしょうか?
あまりスキルがないので。
よろしくお願いいたします。
(masa@) 2025/03/03(月) 22:03:33
横からですけど、 画像前半の状態の時、私の環境でも同様な症状が起きていますが、 シートをスクロールして元に戻したら着色していませんか?
xyzさんご提示の数式は想定している動作をしていますが、 Excel側で描画が正しくされていないような印象です。 (U.N.Owen) 2025/03/03(月) 22:32:28
詳しいことはわかりませんが、 一度A2:E10にダミーデータを入力した後消去、とかして運用すれば症状が起きないかも。 つまり、Usedrangeになっていれば症状が出無いかもということです。 (U.N.Owen) 2025/03/03(月) 23:04:39
私もトラブル再現しました。
昔、XL2007になったとき、こんな類の不具合が頻発しました。 1048576行になったことで、効率的に処理する方策が色々検討され、 今回の様に、使ってない範囲(行)は無視して処理速度を上げようよ、 なんてアイデアも何らかの形で組み込まれたんじゃないですかね。
U.N.Owenさんのアイデアと同じですが、 試しに、H1〜H10に(無意味ながら)実際に何かデータを入れてから、 消去すると正常化しました。 (ちゃんと全行入力しないとダメでした)
(半平太) 2025/03/04(火) 00:11:47
質問者さんお疲れ様です。 U.N.Owenさん、半平太さん、フォローご指摘ありがとうございます。
気が付きませんでしたね、サンプルをシートに転記する段階で、いったんなんらかの文字が入り、 それを置換したせいでしょうか。
なにか不具合に近い感じがしますね。条件式そのものは正しいと思います。 ご指摘のとおり、Excel内部での計算量節約が裏目に出ているんでしょうか。 尤も、一行目にMATCH式を書き、下の行ではそれを参照する方式にすると計算量は減るかも知れません。 (ただし、それでも事象は発生するようです)
お二人からの対応策のほか、以下のような方法もあるかと思います。
そのSheetのSheetモジュールに Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("H1:H10")) Is Nothing Then Exit Sub Application.ScreenUpdating = True End Sub を追加します。
(こうすることで、H1:H10のいずれかのセルを変更すると、Application.ScreenUpdating = True が実行され、これに伴って画面更新が強制実行され、不具合らしきものは回避できます。 このテクニックは、いわゆるアンドリューの方法とネーミングされているはずです。 https://www.relief.jp/docs/001406.html を参照のこと) (xyz) 2025/03/04(火) 07:54:44
たしかにU.N.Owenさん、半平太さんの方法でうまくいきます。
xyzさんご提示の方法は私には高度すぎて無理です。
ダミーデータを入れていったん消去法はシート上無理なので
スクロールで逃げたいと思います。
本当にありがとうございました。
(masa@) 2025/03/04(火) 08:52:32
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.