• ベストアンサー

文字の色も参照 VLOOKUP

VLOOKUPを使って、シート1に有るデータベースから 必要なデータを参照して、シート2に表示させています。この時シート1のデータの中には、いくつか 文字の色がついていて 目立つようにしているものがあります。これをVLOOKUPのように、同じくデータベースから参照して、抽出先データに反映させたいのですが、関数では出来ないようで、VBAでコントロールをする必要があるようで、調べたところ下記の様な、質問が過去にあり、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=968962 これを試してみましたが、あまり詳しく書かれていなく、私の解釈で作るとまったく動作しませんでした。 どなたか、わかる方もう少し補足情報をいただけませんか? よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

どうしてもVBAでというなら僕の回答は読み飛ばしてください。 VLOOKUPと条件付書式でやる方法を思いつきました。 シート1に1列追加し、色付きなら1、色付きじゃなければ空白とします。 で、シート2の方では項目を参照するVLOOKUPの右の列に、先程追加した色付きか否かのフラグ列を参照するVLOOKUPを書きます。 最後に、項目を参照した列を選択して、書式→条件付書式 数式が:=D1=1 (色つきか否かの列がDの場合) これで、シート1で色付きの項目を参照した場合はシート2でも色つきにはなります。 頑張ってくださいヽ(^。^)ノ

shinarin
質問者

お礼

GET.CELLでセル番号を取って、それをVLOOKで参照し、条件書式したらうまくいきました。再計算(F9)をさせないと変更が更新されないので、これを自動でするマクロを入れようと思います。 大変参考になりました。 有難う御座います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.4

例えば商品テーブルとして、Sheet1 に     E    F    G 1  番 号  品 名  単 価  2  S10  みかん  100 3  S20  りんご  200 4  S30  ばなな  300 があり、同じくSheet1のA列に番号を入力して、 この商品名テーブルを参照し、B列に品名を表示する場合。 強調の為の色は品名に付けてあるとする。 番号がない場合はOn Errorでこの処理を抜ける。 これはあくまでもワークシート関数を使用する場合であり、またこのような場合ワークシート関数はVLookUpではなくMATCH関数が適しています。 VBEを開き、Sheet1に以下を書くかコピペ。 Private Sub Worksheet_Change(ByVal Target As Range) Dim R As Long On Error GoTo JumpSub If Target.Column = 1 Then R = WorksheetFunction.Match(Target, Range("E1:E4"), 0) With Target.Offset(0, 1) .Value = Range("F" & R).Value .Font.ColorIndex = Range("F" & R).Font.ColorIndex End With End If JumpSub: End Sub 上記のコードの場合、MATCHの範囲は、 E1:E4 です。 E2:E4 と勘違いしないように。 また、上記のコードのような場合はApplication.EnableEventは必要ありませんが、大事なことですので、どういうときに必要になるのかはちょと勉強してみてください。  

shinarin
質問者

お礼

返事おそくなりました。 ご丁寧に解説有難う御座います。 コピペをしてみたのですが、うまく動かなく、 あまり手取り足取り質問するのも申し訳ないので、 今回はもう少し低めのハードルに挑戦します。 有難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

上記過去質問の回答者です。 例題ちして、E1:G3に 1 東京 6 2 大阪 8 3 名古屋 22 をいれ、表を作ります。 G列は色コードです。 Sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Application.EnableEvents = False Target.Offset(0, 1) = WorksheetFunction.VLookup(Target, Range("e1:g3"), 2, False) Application.EnableEvents = True Target.Offset(0, 1).Interior.ColorIndex = _ WorksheetFunction.VLookup(Target, Range("e1:g3"), 3, False) End If End Sub をコピーします。 ワークシート1に戻り A列に1,2,3のどれかを入れると、B列にそれに対応した文字列が入り、B列セルに色がつきます。 但し、VBAが少し判っていただいてないと、頓挫するかも知れない気がします。 (1)Changeイベントのクセ (2)途中でエラーに成ったとき、標準モジュールの Sub test01() Application.EnableEvents = True End Sub で普通状態に戻す (3)本番では Target.Column = 1の部分の、入力列に合わせた修正 "e1:g3"),の部分の表の大きさ(項目数の多さ)による 修正 などが必要です。

shinarin
質問者

お礼

簡単なVBAしかわからなく挫折してしまいました。 ご丁寧に解説有難う御座います。 もう少し力をつけてからVBAに切り替えさせていただきます。お返事おそくなってすみません。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

VBAでやる場合、 例えば、 マクロの記録で 書式のコピー(ハケのボタン)を使って どっかの書式付けされたセルをコピーしてみて下さい。 その時のマクロの記録を参考に、 該当セルの書式をコピーすればいいと思います。

shinarin
質問者

お礼

アドバイス有難う御座います。 参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAでVLOOKUPを使う際に、別のシートの範囲を参照する方法

    はじめまして、saitou takayukiです。 vbaでデータの処理を行っているのですが、 その際、vlookup関数を使う際に問題がありました。 プログラミングの内容はsheet1で指定した範囲の10列目のデータを vlookup関数で参照し、sheet2のデータへ書き込むのですが、 vbaでvlookup関数がうまく動いてくれません。 ちなみにsheet1で指定した範囲はユーザーフォームを利用しています。 具体的な中身は Application.Worksheets(2).Cells(10,10) = Application.worksheetFunction.VLookup(id_number,hani_range ,10, 0) としていますが、エラーがでて動きません。 hani_rengeが参照範囲なのですが、これは ユーザーフォームで範囲指定することで得たテキスト形式のhani_textをRenge形のhani_range変数に変えたものです。 アドバイスお待ちしております。よろしくお願いします。

  • 連動するvlookupかVBAを教えて下さい。

    現在、シート2にデータ一覧表(列が100程度/行は無数です)が存在しており、シート1にvlookupで反映させています。(シート1は行ごとの印刷用) 今回、列データの追加・削除を行う事になりました。 今まではvlookupで =VLOOKUP(Z3,一覧表,81,FALSE)のように抽出していましたが、 この場合、シート2の列を挿入するたびに設定しなくてはいけません。 ※Z3にはシート2のA列(ID)を手入力します。 シート2の列に連動してシート1の関数を変化させることは出来ますか? もしくは、VBAなら可能なのでしょうか? ちなみに、シート1ではシート2のデータが無秩序に並んでいます。 何か良い方法を教えて下さい。。。。よろしくお願いいたします。

  • VLOOKUP関数

    複数のシートにあるデータをVLOOKUP関数で、一つのシートにまとめることができたのですが・・ それぞれの複数のシートの元のデータに黒以外の色のデータがあり、その書式(フォントの色)もまとめたシートに反映するには、どうしたらいいのでしょうか? よろしくお願いします。

  • エクセルVLOOKUP関数の参照先に関して

    エクセルのVLOOKUP関数に関する質問です。 BOOK(1)とBOOK(2)(それぞれは別フォルダに入っています)があり、 BOOK(1)の中でVLOOKUP関数を用いて、BOOK(2)からデータを参照しています。 参照先のBOOK(2)は管理者以外読み取り専用となっていますが、 たとえ保存できなくても誰かがデータを書き換えたり、別名で保存したりすると、VLOOKUPの参照結果も、書き換え後のデータ(別名保存したファイル)になってしまうようです。 希望としては、VLOOKUPの参照先であるBOOK(2)を固定したいです。 この件に関して、対処法はありますでしょうか。

  • VLOOKUP 参照について

    ファイルAのなかにリストと重量のシートがあります。 VLOOKUP'重量'にて参照させてます。 同じファイルを数人に分散し、結合時にファイルBに追加したら、VLOOKUP'[データA.XLS]重量'となりました。再起動時に「このブックには他のデータソースへのリンクが含まれている」とメッセージが出ました。 各自、「重量シート」にないものは、任意入力してますので、ファイルBの式を追加分にコピーしたら任意入力したものが消えてしまいます。 最終的にはファイルBのみ保管したいのですが、良い方法があれば教えて下さい。

  • ExcelのVlookupでアクセスを参照したい

    質問があります。 掲題の通りですが、ExcelのVlookupでACCESSのクエリを参照してレコードを取得したいです。 今まで、ACCESSのクエリをExcelにエクスポートして、それをExcelでVlookupで持ってきていました。それを、Accessから直接Vlookupでもってきたいです。 ADO+VBAでやるだろうとは理解していますが、どうも難しくわからないです・・・。コードの記述を含めてやり方を教授して頂けると幸いです。 画像をアップロードしたのでよろしくお願いいたします。 画像のA1-D5がExcelで、下のテーブルはACCESSのものです。 ACCESSのテーブルをExcelのシートにコピペしてVlookupすれば良いのですが、後学のため、それと応用を利かすためにAccessのクエリを直接参照してデータを取得する方法を知りたいです。 よろしくお願いいたします。 それと、もし、その他オフィスの項目で聞くべきでしたら教えて頂ければ幸いです。 よろしくお願いいたします。

  • Excelの参照か、VLOOKUPでできるか

    Excelの参照か、VLOOKUPでできるか わかりませんが教えてください。 MS2007です。 画像を見てください。 一番左に「1」これは日にち。5月なら5/1と考えてください。 次に塗り潰した縦のアルファベット。これが項目。 次には「A1」から始まる数字が付属した縦のデータセルがK列まで11列。 L,O,R,U,X,L1もデータが入ります。 このシートはFAX用となっていて二分割して 作成した表示になっていますが本来は下の部分も横にくっついて一列です。 シート5月には同じつくりのシートがあり「1」(日にち)に付随した 横一列の形式で作成してあり、それは縦に1~31、 つまりは5/31までデータが入力できる連続したつくりになっています。 この「5月」のシートのデータを、日にちごとに「FAX用」の表の枠に自動で移る(参照?) 出来るようにしたいのですがよくわかりません。 たとえば、「5月」シートの5/1の「1」を「2」にすると「2」(5/2)に付随したデータが 「FAX用」の「1」を「2」にすると付随した横列に自動で数値が反映される感じです。 よろしく御願いします。

  • VisualStudio.NET でのSliderコントロールの参照

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2310608 ↑の質問で「コンポーネント参照でSliderコントロールを参照可能に設定する。」 という回答をいただいたのですが、Sliderコントロールがどこにあるのかわかりません。 どこにあるのか教えていただけないでしょうか? よろしくおねがいします。

  • VLOOKUPによる他シートの値参照

    初心者で以下の処理を行うコーディングの方法が分りません。 いろいろと他の質問、サイトを調べましたが、解決できませんでしたので、ご指導頂ければ有り難いです。 (1)"Sheet1"に下記例の通り、2列にデータが並んでいる。  左列には商品、右列にはその単価がセットされている。 (例) 商品1  \11 商品2  \22 商品3  \33 : (2)別シート"Sheet2"の左列には、商品が"sheet1"とは 異なる順序で並んでいる。また同一商品が複数存在することもある。 この商品の右列にそれぞれの単価をセットしたい。 商品3  (Sheet1を参照して値をセット) 商品7  (Sheet1を参照して値をセット) 商品1  (Sheet1を参照して値をセット) : 、って感じです。EXCEL関数の"VLOOKUP"を使おうと思っているのですが、どうも思った通りの結果がでません。 商品のデータ数は当然変動するのでVLOOKUPの参照セルに変数を使おうと思っているのですが、 その方法がまずいのでしょうか?

  • VLOOKUPの複数参照先

    こんばんは。 エクセルのVLOOKUPでの質問があります。 よろしくお願いします。 1つのbookの中にA,B,C,D...とシートがあります。 Aのシートにて、VLOOKUPを使ってデータの参照をしたいのですが、 B,C,D・・の複数のシートを参照先にしたいのですが、 可能なのでしょうか。 検索先の文字列に応じて検索シート先を変えられれば・・と 思っています。 もう一つ、参照先に目的の値がなかった場合、#N/Aが表示されるのですが、これを1などの数字にすることはできないでしょうか。 お願い致します。

専門家に質問してみよう