• ベストアンサー

vlookupで返された値が空白だったら斜線をひく

Excel2010を使用しています。 vlookupで返された値が空白の場合に斜線を引きたいのですが,これにはマクロが必要だとわかりました。 マクロは全く組んだことがないので,開発タブを表示した後,どうすればいいのか全くわかりません。 丁寧に説明して頂けると助かります。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

回答しようとしたら新年があけましたね。 明けましておめでとうございます。 ところで マクロを実行させるタイミングをイベントと呼びます。 マクロのイベントの中に、関数の結果が空白だった場合に 特定のマクロを実行させるという機能はありません。 それに近いもので言えば、セルの値が変更された場合 に実行させるという Changeイベントがあります。 つまり、Vlookupの検索値のセルが変更されて Vlookup関数を入れているセルの値が空白だった場合に 斜線の入れるというマクロを組むことになります。 逆に空白でなかったら、斜線を外すと処理も必要になります。 Vlookup関数がどこに入っていて、どのような関数なのかもわかなければ 手出しができませんし、初心者が理解するにちょっと敷居が高いかもしれません。 代替案ですが、Vlookup関数を IF文と組み合わせにして 空白だったら -- を表示させるとかではダメなのでしょうか。

mi-aikon
質問者

お礼

斜線を入れるマクロと斜線を消すマクロの2つを組んでみました。 Sub セルが空白なら斜線() Dim i As Integer, j As Integer For i = 112 To 117 For j = 47 To 73 If Cells(i, j).Value = "" Then '0の場合 Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlContinuous Cells(i, j).Borders.LineStyle = xlContinuous Else Cells(i, j).Borders.LineStyle = xlContinuous End If Next j Next i End Sub Sub 斜線を消す() Dim i As Integer, j As Integer For i = 112 To 117 For j = 47 To 73 Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlNone Cells(i, j).Borders.LineStyle = xlContinuous Next j Next i End Sub   斜線を消して,また入れてということをしています。changeイベントを使うと良さそうですね!

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

基本手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim h as range  for each h in selection   if h.value = "" then    h.borders(xldiagonalup).linestyle = xlcontinuous   end if  next end sub ファイルメニューから終了してエクセルに戻る あなたがVLOOKUP関数を記入しているセル範囲を選ぶ ALT+F8を押してマクロを実行する 次のステップ: そもそも「どこのセル範囲に対して」ご相談のような一連の事をしたいと思ってるのか、そこから始まります。言い換えると、あなたは具体的にどこのセル範囲にVLOOKUP関数を記入してるのですか、ということです。 通常、ご相談のようなマクロを考えるに当たっては、具体的な表のレイアウト(何列には何を、どこ列には問題のVLOOKUP関数を記入している)は既に出来上がっています。その出来上がった表に対して、適切にマクロを準備していきます。今回はそういう前提条件が何も示されていないので、わざわざ「対象範囲を手で選択しておいてからマクロを実行する」みたいな、無駄な手間が入りました。 それとも?VLOOKUP関数がどこに記入されてるのか事前には不明で決められないので、VLOOKUP関数が記入されたセルをエクセルに探させるところからマクロにしたいのでしょうか。ヤリタイ事が増えていけば、当然マクロはそれだけ複雑に、難易度も上がっていきます。 それから、今問題の「空白を返すVLOOKUP関数」は、ホントに空白("")を計算しているのですか? 非常にしばしば、たとえば「実はゼロを返してるけど見た目上ゼロを表示してないので空白に見えてるだけだった」とか、空白じゃなく違うものを計算してるのを説明できてなくて教わったマクロが動かないご相談とか、よく見かけます。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

以下で自作関数のネタを作る 1)リボンの左から2番目、「マクロ」の右の▽をクリック 2)「マクロの記録」をクリック 3)どこかのセルを選択し、斜線引く処理を行う 4)「記録終了」をクリック > vlookupで返された値が空白の場合に斜線を引きたい iF文でvlookupの戻り値を判断し、空白なら上記の関数を呼ぶ ただし、「3)で選択したセル」は常に変らないので 自作関数の引数に自セルを渡す→受取側(=自作関数)は 引数のセルに斜線引くに変更が必要

関連するQ&A