出産前後の痔にはご注意!

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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

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



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

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

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

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

例えば商品テーブルとして、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

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELで塗りつぶし色ごとvlookupしたい

vlookupで表引きをして所定の範囲にある値を持ってくる一覧表を作成しています。この際に見やすくするため、値を持ってくる表引きのマスタに設定されている塗りつぶしの色ごと参照させたいのですが、どのようにしたら良いでしょうか。中間色なども多く使用しており、また参照するマスタ部の数値範囲も変わることがあるため、条件付書式以外の方法があったら教えてください。

Aベストアンサー

#2です。
>c = Application.WorksheetFunction... のところで
を下記にして実行してください・
継続行の書き方は、スペース+アンダーバー+改行でやります。
OKWAVEで横が長いと、勝手に機械的に行変更が起こるようです。すこしVBAになれた人なら、原因を見破りますが・・
c = Application.WorksheetFunction.VLookup(Cells(i, "a"), Range("c1:d10"), _
2, True)
もう一度やってみましたが、その点以外はうまくいきます。

QExcelでセル参照したとき、書式も一緒に持ってくるには?

例えば、A1セルに文字データと、それに付随した字体、文字サイズ、文字やセルの色、その他条件付き書式で設定した書式等があるとします。いま、別のセルで、=A1とすると、そのセルに文字データを取り込むことはできるが、付随した書式は取り込めません、よね?書式も一緒に取り込む数式の書き方ってあるでしょうか。教えてください。くれぐれも、コピーしろなどというお答えはなさらないで下さい。

Aベストアンサー

演算子や関数は、あくまでもセル内の文字や数値の処理をするものであり、属性(文字や枠の書式)に関する処理は行いません。
強いて言えば、カメラコピーというのがあります。
(メニューバーで右クリックし、ユーザ設定/コマンド/ツールの中にカメラがありますので、これをツールバーに追加します)
これは、オブジェクトの一種ですが、これはもとの書式が変わるとコピー先も同じように変わります。
ただ、計算や関数の引数などには使えませんが。

QExcelでVLOOKUP

Excelで異なるシートの表からデータを参照したいです。
VLOOKUPにてできるのですが、データしかとれません。
書式ごとデータをとることはできませんか?

data1 ああああ  (赤色 12pt)
data2 いいいい  (青色 18pt)
data3 うううう  (標準のまま)

data2の「いいいい」はできるんですが、青色や文字のフォントサイズ
までいっしょに反映されるようにしたいです。

Aベストアンサー

(1)エクセルの関数式は、Cell関数を除いて、値に関するもので、値(計算値や何番目など)番号を返します。
セルに設定された書式(色、フォント、サイズ、罫線など)に関する情報は取れません。
したがって無理です。
(2)条件付書式が3種類程度なら質問と同じことを
やります。
(3)VBAを使えば値を持ってくるだけで出来ます。
Sub test01()
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
d = ws1.Range("A65356").End(xlUp).Row
MsgBox d
For i = 1 To d
x = Application.VLookup(ws1.Cells(i, "A"), ws2.Range("$a$1:$d$6"), 2, False)
y = Application.VLookup(ws1.Cells(i, "A"), ws2.Range("$a$1:$d$6"), 3, False)
z = Application.VLookup(ws1.Cells(i, "A"), ws2.Range("$a$1:$d$6"), 4, False)
ws1.Cells(i, "B") = x
ws1.Cells(i, "a").Interior.ColorIndex = y
ws1.Cells(i, "a").Font.Size = z
Next i
End Sub
急いで作ったので内容はもう一つですが、こんな内容です。
(データ)Sheet2のA1:D3
111aaa310
222bbb514
333ccc618
Sheet1のA1:A3に
111aaa
222bbb
333ccc
のとき、B列のようになり、A列に色がつき、フォントサイズが変る。

(1)エクセルの関数式は、Cell関数を除いて、値に関するもので、値(計算値や何番目など)番号を返します。
セルに設定された書式(色、フォント、サイズ、罫線など)に関する情報は取れません。
したがって無理です。
(2)条件付書式が3種類程度なら質問と同じことを
やります。
(3)VBAを使えば値を持ってくるだけで出来ます。
Sub test01()
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
d = ws1.Range("A65356").End(xlUp).Row
MsgBox ...続きを読む

QエクセルでVLOOKUPの結果を含むセルの行色を

エクセルで以下のことをVBAなしに達成できますでしょうか?
シート1のあるセルに値を入れると…
1) Vlookupでシート2から必要な値を見つける。
2) 1)で見つけた値をもとに、シート1のセルでその値を含む行全体の色を変更する

VLOOKUPで値を引っ張ってきた後、条件付書式をどうすればよいのかわかりません。
よろしくお願い致します。

Aベストアンサー

>2) 1)で見つけた値をもとに、シート1のセルでその値を含む行全体の色を変更する

「その値を含む行」とはVLOOKUP数式の行ではなく、別の行範囲(例えば検索する列はB列)ということで良いのですね。

条件付き書式を設定したい対象範囲(例えばA2セルからG100セル)を選択し、数式を使った条件付き書式で「=$B2=VLOOKUP関数の数式セルの絶対参照」のような数式(特定の値が文字列の場合)にします。

#ご質問にはご使用のエクセルのバージョンが明示されておらず、またシート1のレイアウトなどが具体的に提示されていないので一般的な回答になりましたが、Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記し、シートのレイアウトなども具体的に例示するようにしましょう。

QExcelの条件付書式とVlookupを組み合わせて

いつもお世話になっております。

『残高報告3月末』と『残高報告9月末』というフォーマットを同じくするシートがあります。
いずれも一行一レコードで、「案件名」「残高1」「残高2」「残高3」という4項目についてデータが存在します。
この中の「残高3」という項目について両シート間で比較を行い、値が違っている場合は『残高報告9月末』のセルの文字色を青に変える、ということを条件付書式機能を用いて設定しようとしています。

レコードの順番が変わらなければセルの位置をして指定して比較を行えばよいものと思うのですが、順番は変わる可能性があるため、
『「案件名」が同じものを探して、そのレコードの「残高3」の値同士を比較する』ということが必要になっています。
Vlookupを使えばできるように思うのですが、具体的にどう記述すればいいのかまでたどり着けず…教えて頂けますと助かります。

宜しくお願い致します。

Aベストアンサー

A列~D列に案件名~残高3があるものとして、
残高報告9月末シートのE2に
=VLOOKUP(A2,残高報告3月末!$A:$D,4,FALSE)
とすれば、同じ案件名の3月末の残高がでると思います。


それを参考にして、D列に条件付き書式を数式で下記のようにします。
=D2<>VLOOKUP(A2,INDIRECT("残高報告3月末!$A:$D"),4,FALSE)

※条件付き書式だと別シートを参照できないので、INDIRECT関数を使っています。

条件付き書式について知っているものとして回答していますので、
そもそも条件付き書式がわからないのであれば、別途調べて見てください。

QExcel 書式を関数で判断。

Excelで、「もしA1が緑色ならば」などと、書式を関数で判断させるにはどうすればよいのでしょうか。

Aベストアンサー

#1の回答通り関数はありません。マクロでなら可能です。

ここでは「色の付いたセルを合計」という質問が結構出ています。
http://okwave.jp/kotaeru.php3?q=2000523

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qexcel 参照しているセルに色がついていたら、返すセルにも色もつける

excelの詳しい方、ぜひ教えてください!

Sheet1にあるデータを、計算式によってSheet2に参照させていますが、Sheet1のセルの色までは参照する事ができません。
計算式はいたって簡単で、例えばSheet1のA1を参照している時は、Sheet2のセルに
=Sheet1!$A$1
と計算式を入力しています。
条件付き書式や関数も考えたのですが、
”もし、参照しているセルに色がついていたら、返すセルにも色もつける”
をどうすれば出来るのかわかりません。

どうか、わかる方ぜひ教えてください。お願いします!!

Aベストアンサー

セルを色情報を得ることはできませんから、通常の関数では行うことは出来ません。

QエクセルのLOOKUPを書式ごと表示させる方法

どなたか解る方、ご助言お願いします。

エクセルの2000を使用しています。
今現在,LOOKUPを使用して他のセルに表示させている項目があります。
参照するデーターには文字色が着いているセルもあるのですが、
表示させる際にもそのまま同じ色で表示させたいと考えています。
これは可能でしょうか?
もし可能ならば方法を教えてください。
よろしくお願い致します。

Aベストアンサー

参照元が条件付き書式なら一部の書式に関しては可能ですがそれ以外はできません。
※少なくともEXCEL2003までの標準の機能にはありません。

可能なのは数式でなくマクロを使った場合です。
この場合は書式ごとセルの内容を持ってくることが可能です。

Qエクセルで色の変更を他のシートに反映させるには

Execl2000を使っています。
Sheet1からSheet5まであるとします。
Sheet1のA1のセルの色を変えたときに、Sheet2~5のA1の色も自動的に変わるようにするにはどうすればいいのでしょうか。
数値などはリンク貼り付けで自動的に変わるようにできるのですが、色は無理のようです。
土日は返事ができませんが(今日はたまたま出勤日なのでOK)、よろしくおねがいします。

Aベストアンサー

いちばん簡単な方法は、Sheet1~Sheet5 を一括選択して A1 のセル色を変えることです。
マクロで処理する方法もありますが、わざわざそこまでする必要はないと思います。


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

人気Q&Aランキング