• ベストアンサー

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/7940)
回答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

  • Excelのセルに斜線を引くマクロ

    Excel2007を使用しています。 画像のように,「印刷」シートと「データ」シートがあります。 画像のように,「印刷」シートのAO112~BZ112のセルを結合しています。 そのセルには,VLOOKUP関数で,「データ」シート10列目のデータを返すようにしています。 関数を見てもらえば分かるとおり, もし10列目にデータがなければ(VLOOKUPで値が0なら)””(空白)を返すようにしています。 以上のようなシートで,このセルにデータが無い場合, 画像のAO113~BZ113のように右上がりの斜線を引きたいのです。 もちろん,データが入っている場合は,斜線は消します。 マクロに関しては,まだまだ初心者のため, ほとんど分からないので,分かりやすく教えていただけませんでしょうか? お願いします。

  • VLOOKUPでの空白表示を教えて下さい。

    A   B 商品名 内容 =IF(A111="","",VLOOKUP(A111,A2:B110,2,0)) という関数を使っていますが、Bの内容が空白の場合、0が表示されてしまいます。空白にしたい時はどうすれば宜しいでしょうか?

  • excel 空白セルに自動で斜線をひきたいです

    EXCEL2007使用しています。 名簿シートと印刷シートがあります。 印刷シートのセルAJ33:AR37の結合セルに=IF(VLOOKUP($J$4,名簿!$A$2:$G$383,7)="","","印") がはいっています。 このセルが空白ならば斜線を引きたいのですが、なかなかうまくできません。 過去の質問等も参考にしましたが、斜線は引けても、今度は消えません・・・。 ちなみに連続印刷をすでに作ってあるのですが、この連続印刷にも対応させることは可能でしょうか? A1:C3の結合セルの名前は”番号”  印刷範囲の入力セルは”自”、”至”としてあります。 Sub 印刷開始() Range("番号") = Range("自") Do While Range("番号") <= Range("至") Sheets("印刷").PrintOut Range("番号") = Range("番号") + 1 Loop End Sub 説明力がなくて申し訳ないのですが、どうぞよろしくお願い致します。

  • vlookup

    Excel関数であるVLOOKUPについて vlookupの構文は、 (検索キー, 範囲, 番号, [並べ替え済み])です。 質問は、次の説明についてです。 並べ替え済みを TRUE に指定するか省略し、範囲の先頭列が並べ替え順でない場合、間違った値が返されることがあります。 これ(間違った値が返される場合)は、どのような場合なのでしょうか? 検索対象の列(指定した範囲の先頭列)が並べ替え済みにすることが必須なのでしょうか? 初心者で恐縮ですが、よろしくお願いします。

  • VLOOKUP関数 空白表示の出し方

    VLOOKUP関数を使いたいんですけれど、エラーが出でしまいます。 コード  金額 102   1980 103   2500  105   980 という表で コード番号が飛んでいて何番が無いのかわからないデータ量なんです コード番号をVLOOKUPで拾って行きたいのですが番号が無いとエラー表示になってしまいます。コード番号がない場合は空白又は”-”で表示する方法はどうすればよいでしょうか?

  • VLOOKUPについて

    EXCEL2000のvlookupについての質問です。 下記のような使用法方法 =VLOOKUP(RC[-1],[コード.xls]Sheet1!R1:R65536,2,FALSE) はできるようになったのですが、 複数ファイル(シート全体)を検索する場合は どのように記述すれば良いのでしょうか? また、下記のエラーについて悩んでいます。 あるシートの値をvlookupで検索すると見つからないの ですが、普通に編集→検索をすると見つかります。 これはvlookupで検索できないということでしょうか?

  • Excel2010で3つの値のうち最も少ない値

    Excel2010で3つの値のうち最も少ない値を返して、もしその値が空白だったらゼロと認識する。としたいのですが、 どのような関数にしたらよいのでしょうか? どなたかおしえてください。 例) A1:3 A2:5 A3:(空白) この3つのセルのうち最も少ない数を返す。 =MIN(A1,A2,A3) だと、値3が返ってしまいます。空白もゼロと認識して値0を返したいのです。 ですが、この3つのセル以外に空白セルを残すため、Excel昨日の「空白にゼロ値を表示する」を使いたくありません。 どうぞよろしくお願いいたします。

  • エクセル関数で検索した結果の値だけ表示したい

    エクセルのセルに値を探すvlook関数を入力していますが、そのままグラフや集計表を作ったり、移動させたりと色々編集したいので値を探した後、数式を値に変えたいのです。 =IF(ISNA(VLOOKUP(D6,**!$B:$E,4,FALSE)),"",VLOOKUP(D6,**!$B:$E,4,FALSE))のような値が見つからなかった時は空白になる数式が入っています。 値が見つかった場合、「コピー」して「形式を選択して貼付」のような「値」だけにする方法ありませんか? VBAは初心者でネットを見ながら作れる程度です。 イベントで実行するマクロなど調べてはみたのですが、値が見つかったら実行するマクロや空白でなくなったら実行するマクロなど作れたらと思っています。 詳しい方どうか教えて下さい。

  • マクロで改行された計算式の値のコピー

    マクロで改行された計算式の値のコピー セルに計算式が入力されていますが、式の途中で改行と空白が入っている場合があります。 このときにマクロで値のみコピーすると #name? という表示になってしまいます。 値のみをコピーしたいのですが、どうすればいいのでしょうか? 値の貼り付けには Selection.PasteSpecial Paste:=xlValues を使っています。 WinXP Excel2000

  • Excel VlookupとIFのネストについて

    シートAでシートBの値をVlookupで引っ張っています。 ここで、値をそのまま返すだけではなく、値がはいっていれば●で返すようにしたいです。また、参照値がの列が空白の場合があり、エラーを表示させないようにもしたいのです。 =if(参照値="","",vlookup) これにどう足せば、完成できるのでしょうか? この形で考えているからいけないのでしょうか? 初歩的な質問ですが、よろしくお願いいたします。 (ネストはとっても苦手です・・・)