• ベストアンサー

VLOOKUP関数

VLOOKUP関数を使用したときに選択した範囲の字体と同じようにならないのですが、値を返したときに書体(太字、斜体など)を変えるにはどのようにすればいいのでしょうか? お願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

>「工事」を含む文字だけ変えることができる式 #3はその様にしたつもりですが違っていましたか? もし#2で追加した列に1を入力する判断とするなら =IF(ISERROR(FIND("工事",$A1)),"",1) でできます。 同様に他の文字で2,3を設定するなら =IF(ISERROR(FIND("工事",$A1)),IF(ISERROR(FIND("○○",$A1)),IF(ISERROR(FIND("□□",$A1)),"",3) ,2),1) の様にIF文をネストすれば可能です。

minokan
質問者

お礼

いろいろと分かりづらい説明だったにもかかわらず、答えていただき本当にありがとうございました。 また何かあったときにはよろしくお願いします。

minokan
質問者

補足

本当に何度もすみません。 今までは説明が分かりづらかったせいか、いろいろと迷惑をかけました。 自分の作成している表をもう少し詳しく書きます。 元の表と明細表と見積表と3つの表があります。 A-1:番号、B-1:項目、C-1:・・・ 1    道路工事 101  調査 102  調整 103  ガードマン  : 2    水道工事 201  調査 202  排水管  :  : 3    サッシ工事 301  張替  :     : このように簡単に作りましたが、元の表はこんな感じで作成しています。 明細表には元の表を参照にVLOOKUP関数を使っています。 見積表には明細表のセルを参照にしています。(=A1というような形をとってい ます) この見積表の「○○工事」に関わらず特定の文字(列番号の1、2、3といった一桁の番号の書体)を太字にしたいのです。 こんな感じですが可能でしょうか? なんか説明がまた分かりづらくてすみません。お願いします。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

VBAの回答ですが VBEのWorksheetのChangeイベント(注)に Private Sub Worksheet_Change(ByVal Target As Range) ' MsgBox Target.Column If Target.Column = 1 Then a = WorksheetFunction.VLookup(Target, Range("d1:e5"), 2, False) ' MsgBox a Target.Offset(0, 1) = a p = InStr(1, a, "工事") If p = 0 Then Target.Offset(0, 1).Font.ColorIndex = 0 Else Target.Offset(0, 1).Font.ColorIndex = 5 End If End If End Sub を貼りつける。 D1:E5に 1 壁塗り 2 サッシ工事 3 ドアー取りつけ 4 水道工事 5 配水管敷設 A1:A8に下記を入れると、入れた瞬間にB列の値がセットされ「工事」を含むものは青色字になる。 1 壁塗り 3 ドアー取りつけ 4 水道工事(青) 2 サッシ工事(青) 2 サッシ工事(青) 1 壁塗り 5 配水管敷設 2 サッシ工事(青) 文字色を変える設定にしましたが、太字なら Target.Offset(0, 1).Font.Bold=True とFale 斜体なら Target.Offset(0, 1).Font.Italic =True とFalse にすれば良い。 (注)出し方はVBE画面のVBAProjectのSheet1をダブルクリックし、左の▼をクリックしWorksheet、右の▼をクリックしChangeをクリックすると Private Sub Worksheet_Change(ByVal Target As Range) End Sub が出る。

minokan
質問者

お礼

なんだかすごいものまで作成していただきありがとうございます。 VBEはいつか覚えようとは思っていますが、難しいイメージがあるので…。でもこのようなものを見るとできれば良いなと思います。 いつか勉強したときに、つまづいたときはよろしくお願いします。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

>「○○工事」といったような文字だけを太字にするとかはどうやればできるのでしょうか? 「工事」を含む文字を太字と言う解釈でいいでしょうか? 「数式が」「=NOT(ISERROR(FIND("工事",$A$1)))」 FIND関数で$A$1に「工事」を探索でなければ#VALUE! ISERROR関数で#VALUE!をTRUEに変換 書式変更は工事がある時なのでNOT関数で入れ替え もし該当部分だけと言うことであればできません。

minokan
質問者

補足

何度もすみません。 「○○工事」という数ある全ての「○○工事」の文字を太字にしたいのです。 条件付き書式では3つまでしかできないし、「○○工事」というタイトルが多くあるので「工事」を含む文字だけ変えることができる式があれば良かったのですが、どうでしょうか?

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

条件付書式でよければ 元の表に書式用に1列追加します。 0又はブランクなら、書式変更なし 1なら太字と斜体 2なら太字のみ 3なら斜体のみ として入力 VLOOKUPを入力したセルで「書式」「条件付書式」で 条件1「数式が」「=VLOOKUP()=1」で書式に太字と斜体 条件2「数式が」「=VLOOKUP()=2」で書式に太字 条件3「数式が」「=VLOOKUP()=3」で書式に斜体 こんなものでどうですか?文字色・塗り潰し・罫線の設定も変更できます。

minokan
質問者

補足

いろいろとありがとうございます。 勉強になりました。 条件付書式の件で一つ教えて欲しいのですが、「○○工事」といったような文字だけを太字にするとかはどうやればできるのでしょうか? ワイルドカードを使ってもイマイチできなかったので...。何度もすみません。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

VLOOKUPは値を参照する関数です。書式は変わりません。 書式を変えたいのなら 単一の場合は、「書式」「セルの書式設定」で変更 単一でなく条件が特定できる場合、 「書式」「条件付書式」で書式を設定(最大3通り設定可能) 単一でなく条件が特定できない場合(上記で4通り以上の場合を含む)、 VBAのWorksheet_Cange イベントで変更 方法としてはこんなものですが...

minokan
質問者

お礼

それではVLOOKUP関数で置き換えられた文字が変えられないのなら、この参照されたセルを他の表を作ってその表のセルに書体を変えて表示させることは可能でしょうか? 分かりづらくてすみません。

minokan
質問者

補足

回答ありがとうございます。 やっぱりできないんですか...。表の中にタイトルとサブタイトルのようなものを作ったのですが、タイトルのほうを入力したときに太字などにできればよかったのですが、表の中でも決まったところではなく不規則にでてくるので、条件付だと無理でした。 VBAのほうはよく分からないので他になにかありましたらお願いします。

関連するQ&A