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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

2303閲覧

【エクセル初歩的質問】

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

1クリップ

投稿2017/06/21 11:06

編集2017/06/21 13:52

エクセル2016を使用しています。

VLOOK UP 関数を使用して、他のシートから該当のデータを抽出しております。
元のシートのセルに塗りつぶしがおこなわれていた時に、その色も反映することはできますでしょうか?

同様の質問を検索すると簡単に出てくるのですが、どれも10年以上前の記事がヒットしました。

文字の色も参照 VLOOKUP - Access(アクセス) 解決済 | 教えて!goo
https://oshiete.goo.ne.jp/qa/1003087.html

ExcelでVLOOKUP関数などで検索したセルの... Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1468278129

文字の色も参照 VLOOKUP - BIGLOBEなんでも相談室
https://soudan1.biglobe.ne.jp/qa1003087.html

関連記事も一通り目を通しましたが、やはり関数では無理でしょうか?
なんとなくですが、以下のパターンに分かれるような感じでした。

<1>元の表に列を追加後、色がついているセルの横に〇をつけて、その有無により抽出後のセルに色を付ける方法。

<2>イベントマクロ?を使う方法。

詳しい方がおられましたら、最もシンプルな方法をご教授ください。
マクロは初心者レベルであれば、おそらく理解できます。

追記:<1>の方法で上手くいくと思われましたが、問題が発生いたしました。
(※参考:https://soudan1.biglobe.ne.jp/qa1003087.html のベストアンサーの方法)

エクセルのブック全体で以下のVBAが機能しており、条件付書式で一度ハイライトされたものをセル移動すると全て色が消えてしまいます。もともと選択した行を見やすくするために、VBAを使用して選択した行全体に色をつけました。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim highlight As Integer
Dim r As Range
Dim fc As FormatCondition

highlight = 34

Cells.FormatConditions.Delete
Set r = Rows(Target.Row)
Set fc = r.FormatConditions.Add( _
Type:=xlExpression, Formula1:="=0=0")

fc.Interior.ColorIndex = highlight
End Sub

<1>の方法で今回のシートだけ上記のマクロが対象外にできるのであれば、やり方を教えて頂きたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

セルの色は書式になりますので、単純な方法ではVLOOKUP関数で同時に参照することは不可能です。VLOOKUP関数は値を取得する関数であって書式を取得するものではないからです。
セルの色は、罫線と同じようなものです。VLOOKUPで罫線を参照したいという要望だと読み替えると、その困難さが伝わりやすいかもしれません。

シンプルな方法としては、ご自身でもリンクを添付頂いていますが、下記の回答が最も分かりやすいかと思います。
私がご質問を読んで提案しようとした方法とほぼ同様の方法でした。

文字の色も参照 VLOOKUP - Access(アクセス) 解決済 | 教えて!goo
https://oshiete.goo.ne.jp/qa/1003087.html

※追記

VBA(イベントマクロと仰っておられるもの)を用いればなんとかなる方法もなくはないですが、VLOOKUPとの両立は複雑になります。そこまでの手間をかけて実現する内容でもないと思います。
私が事務処理で実施するとしたら、上記の参考リンクの方法で実施するか、そもそもVLOOKUP+書式のコピーを実施しなければならないという前提を考え直します。
よくやるのは、色に頼らないようなセルの目立たせ方を工夫することです。色なしで、例えば隣のセルの値だけで特定のセルを目立たせます。
そうすることで、VLOOKUPした後にも特定の目立ったセルが把握し易くなります。(参考リンクも、本質的にはそのような方法を用いています)

投稿2017/06/21 11:32

編集2017/06/21 11:48
akabee

総合スコア1947

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

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

退会済みユーザー

退会済みユーザー

2017/06/21 12:21

早速の回答ありがとうございます。 やはりやろうとしていたことは、難しいことだったのですね! となると、やはり参考リンクのベストアンサーの人のやり方が合理的でしょうか。 ちなみに以下の部分の方法でやるとした場合、C列(商品名)とD列(1が入力された列)のどちらに色がつくのでしょうか? もしもC列をハイライトさせることができるなら、この方法で問題なさそうです。 (参考: https://oshiete.goo.ne.jp/qa/1003087.html ) 最後に、項目を参照した列を選択して、書式→条件付書式 数式が:=D1=1 (色つきか否かの列がDの場合) これで、シート1で色付きの項目を参照した場合はシート2でも色つきにはなります。
akabee

2017/06/21 12:48

C列のハイライトは問題なくできると思います。 軽く説明しておきますが、条件付き書式とは、特定のセル【1】に対して、ある条件【2】に当てはまった場合に、特定の書式【3】を設定するという機能です。 参考リンクのベストアンサーで【1】【2】【3】に何を設定しているかというと、 【1】「項目を参照した列」→Ataruさんの場合はC列になります。範囲をC列とすることで、条件付き書式が適用される範囲が列全体になります。つまりC列全体が適用対象になります。 【2】「:=D1=1」→すみません、この条件の意味がよくわかっていないのですが、要するに「隣のD列のセルの値が1だったら」という条件を設定すれば良いです。1と2の条件で、C列の範囲で隣のD列のセルの値が1だったら、という条件が出来上がります。 【3】1と2の条件を満たすセルに対して、どんな書式を設定するかを指定します。参考リンクで特に明示されてはいませんが、この部分で「セルに色を付ける」という書式を選択します。 1~3の設定によって、「C列を対象範囲とし、隣のD列のセルに1が入っていたら、C列のセルに色を付ける」という定義が出来上がります。 条件付き書式について使ったことがなければ、一度使い方は個別に調べたほうが良いと思いますが、多分やりたいことは実現できると思いますよ! 「:=D1=1」については私もよくわかっていないので、もし動かなければご自分で修正が必要かもしれませんね^^;
退会済みユーザー

退会済みユーザー

2017/06/21 13:08

条件付書式についての詳しい方法ありがとうございました。 とても分かりやすかったです! 自分のシートによって【1】【2】【3】を変えて、設定すればいいということが分かりました! 仰る通り、私の場合は【1】がC列になります。 【2】に関して参考リンクの場合は、「1」か「空白」を入力しているみたいですね。 ハイライトしたいセルの横に「1」と入力しているみたいなので「1」としていますが、「〇」でも「文字」でも任意で設定できるようですね。 【3】も「セルに色を付ける」でできそうです。 最後に一つお聞きしてもよろしいでしょうか? 【2】については、「1」であれば青色にハイライト、「2」であれば赤色にハイライト、「3」であれば緑色にハイライト等...複数条件を指定することも可能なのでしょうか? お手数おかけします。
退会済みユーザー

退会済みユーザー

2017/06/21 13:57

追記を補足致しました。 お時間あるときでも全然構わないので、返信頂ければ幸いです。
akabee

2017/06/21 14:00 編集

こちらのリンク→http://www.tschoolbank.com/excel/conditional-formatting-plural/の内容を見ますと、複数の条件を用いて、1だったら青、2だったら赤、ということもできそうですね。 条件付き書式ルールの管理、というところで【1】【2】【3】すべての条件の管理をしますので、そこに定義を追加していけばいいと思います。 ※ここから先は読まなくてもかまいません 複数条件を定義する際に注意しておきたいのは、上記リンクにも解説がありますが、条件は上から順に見て最初に当てはまった1つの定義しか適用されないということです。 例えば条件をたくさん定義して、D列の値でセルの色を、E列の値で文字の色を変更したいとします。 その場合、1つめの条件がD列の条件、2つめの条件がE列の条件になっていると、1つめの条件と2つ目の条件どちらにも当てはまる場合に、本来はセルの色も文字の色も変わってほしいのに、2つ目の条件の書式は適用されず、セルの色が変わるだけとなります。 これは1つめの条件に当てはまったときに、そこで次の条件判定をしない決まりになっているためです。 上記を特に深く理解する必要はありませんが、複数の条件を定義しても意図したとおりに動かなかったときに何か注意事項があったということを思い出してみてください。
akabee

2017/06/21 14:12

追記見ました。具体的なコードが提示できるわけではありませんが、Workbook_SheetSelectionChangeメソッドの処理開始時に、現在の処理対象シートが上記処理を適用したくないシートであれば、処理を実行せずにExit Subするような条件分岐を入れてはどうでしょうか? 「現在の処理対象シート」はActiveSheetを使ってなんとかならないかなと思います。
退会済みユーザー

退会済みユーザー

2017/06/21 17:34

毎回とても分かりやすい解説とても感謝しております。 URLのページを拝見しました。 これを上手く使えば、確かに条件を複数設定することができそうですね。 また、複数条件を指定する際の注意点も理解できました。 私の場合は、全て違う符号で条件を振り分けるので、おそらく問題ないのでは?といった気がします。 もし上手くいかなかったら、もう一度読み直して手直しできたらと思います。 追記の件ですが、アドバイス通り処理対象シートから外す方向で検討してみたいと思います。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2017/06/22 05:25 編集

解決いたしました。 「現在の処理対象シート」を外すために、以下のコードを付け加えることで上手くいきました。 if sh.name = "Sheet3" then exit sub さらに、条件付き書式も以下のページを参照しながらやってみると、解決しました。 http://cblog.crie.jp/excel/291/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問