プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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は必要ありませんが、大事なことですので、どういうときに必要になるのかはちょと勉強してみてください。
 
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/28 17:36

上記過去質問の回答者です。


例題ちして、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"),の部分の表の大きさ(項目数の多さ)による
修正
などが必要です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/28 17:41

VBAでやる場合、


例えば、
マクロの記録で
書式のコピー(ハケのボタン)を使って
どっかの書式付けされたセルをコピーしてみて下さい。
その時のマクロの記録を参考に、
該当セルの書式をコピーすればいいと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/28 18:21

どうしてもVBAでというなら僕の回答は読み飛ばしてください。



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

頑張ってくださいヽ(^。^)ノ
    • good
    • 9
この回答へのお礼

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

お礼日時:2004/09/28 18:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A