質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

725閲覧

あるセルの値を参考にして、別のセルに入力されている値によって、入力間違いの場合そのセルの色を塗りつぶして入力ミスを確認できるようにしたい。

menume

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/12/27 22:04

Excel 2013を使用しています。

対象データ表のC列に、「三井住友」や「東京UFJ」といったも銀行を運営している名前を入れていきます。
C列の値に従って、B列には、リストボックスから「銀行 or 通販」 を選択して値を決定して作成す売る表があります。(リストボックスはデータの入力形式で設定してあります。)

イメージ説明

この時に、間違って、C列にみずほ銀行を入力したのに、B列に「通販」と入れてしまった場合、NGパターン表のように、みずほ銀行の「通販」セルを赤く塗りつぶすようにしたいのです。
塗りつぶされたことによって、入力された値が間違っていることに気付けるようにしたいです。

三井住友もUFJ銀行も同様です。
「楽天」のみ、「通販と銀行」以外の値の場合は、赤で塗りつぶしたいと考えています。

C列に来る値の候補は、多くても10個までです。それ以上は増えません。

ルールでも、マクロで一括チェックでも構わないのですが、どうすれば実現するコードを書けばいいのか思いつかなくて困っております。

できれば、マクロで一括でB1からB1000行まで一気にチェックできるようになればいいと思っているのですが。

どなたか解決方法をお分かりの方がおられましたらご教示お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/12/28 00:16

できる人に(有償で)やってもらうという選択肢はありませんか? 一応ここはプログラミングする人の掲示板で、しない人が仕事を依頼するところではありません。
pig_vba

2022/12/28 00:37 編集

解決方法を上げるならば、対象データ表をDictionaryでキーと値のセットとして登録することでしょうか。 そうすれば行ごとに種類と名前の組み合わせが辞書に登録されているかを一気に比較することができます。 当然セル参照は遅いので気になるなら比較先を配列に格納するなど対策が必要ですが、1000行程度であれば知れているでしょう。 Dictionaryの使い方 https://daitaideit.com/vba-dictionary-get-key-item/#mokuzi4-1
pig_vba

2022/12/28 00:39

また、「種類と名前を纏めて一つのキーとしてしまう」という選択肢もあります。こちらの場合はDictionary.Existsを使うことができます。こちらのほうがおすすめかも知れませんね https://daitaideit.com/vba-dictionary-multi-key/
menume

2022/12/28 00:41

ありがとうございます。参考にさせていただき挑戦してみます。
menume

2022/12/28 16:08

pig_vbaさんありがとうございました。 Dictionaryの参考URLを見てコードの書き方がわかり、先ほど期待する動きになりました。 ありがとうございました。
menume

2022/12/28 16:16

pig_vbaさんから頂いた回答には、どうやってベストアンサーつけたいいのでしょうか。 つけれないのでしょうか・・・。
pig_vba

2022/12/29 06:03

あー。自己解決でも良かったんですが、一応自分が解答欄に転記しときますね
guest

回答2

0

ベストアンサー

※コメントから転記。どっち使ったかわからないので両方とも載せときます。両方ともDictionaryを用いた比較方法です。(比較手段と前準備が異なります)

①対象データ表をDictionaryでキーと値のセットとして登録する
そうすれば行ごとに種類と名前の組み合わせが辞書に登録されているかを一気に比較することができます。
Dictionaryの使い方
https://daitaideit.com/vba-dictionary-get-key-item/#mokuzi4-1

②「種類と名前を纏めて一つのキーとしてしまう」という選択肢もあります。前準備がちょっとだけ増えますがこちらの場合はDictionary.Existsを使うことができます。
https://daitaideit.com/vba-dictionary-multi-key/

投稿2022/12/29 06:08

pig_vba

総合スコア807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

B列が"通販" かつ C列が "楽天" 以外の場合、B列のセルを赤くしたいと理解しました。
条件付き書式設定で行う方法です。(当方excel2018ですが2013でも同じかと思います)

1.B列全体を選択する。
イメージ説明
2.「条件付き書式設定」をクリックし、「新しいルール」をクリック
イメージ説明
3.「数式を使用して、書式設定するセルを決定」をクリック
4.次の数式を満たす場合に値を書式設定 と表示された欄に以下の数式を入力
=AND(B1="通販",C1<>"楽天")
5.書式をクリックし、赤を選択する
イメージ説明
6.実行結果は以下の通りです。
イメージ説明

投稿2022/12/28 01:07

tatsu99

総合スコア5436

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

menume

2022/12/28 16:14

tatsu99さんありがとうございます。 実は、説明のために簡単にしたのですが、教えていただいた方法でやりますと、 銀行・通販のところには、銀行、通販、証券とあった場合、 銀行・みずほ →OK 証券・みずほ をNGとするとした場合、教えていただいた方法では目的にたどりつけませんでした。 時間を使ってご丁寧に説明頂いたいのに申し訳ございません。 pig_vbaさんの教えていただいたディクショナリで対応させていただきました。 ご教示ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問