• ベストアンサー

エクセルVBA

エクセル初心者です。 今、下画像上段のようなデータをエクセルで作っています。 内容は売上表みたいなものです。 表のD列とH列に売上があれば、売上金額が入ります。 ただし、両方ともない場合は、D列とH列に金額は入らず 空白になります。 そこで、「D列とH列が両方空白の場合、その行を非表示にする」 というVBAを作りたいのですが、 コードが分からず困ってしまいました。 データ量がかなり多く、今は1行づつ非表示にしているので 時間がかかってしまいます。 完成版は画像下段です。 何かいいコードはあるのでしょうか。 よろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

オートフィルターを利用して『空白以外』を選択では具合が悪いのでしょうか?

その他の回答 (1)

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

初心者とはいえ、 1)D列とH列が両方空白の場合 の判別(IFステートメント利用) (2)行の非表示 Googfleででも「エクセルVBA 行の非表示」で照会すればコードが出てくる。 または書式ー行ー表示しない、のマクロの記録を採ればコードはわかる。 こういう風に単純なことだ。質問する前に、こういう照会をして、またマクロの記録の応用を間上げて、疑問点を絞って質問すること。 ただし、データが出来上がってから1斉にやる方式である(追加データに即時反応的でない) ーー 参考に 1列だけの空白判別ならば、編集ージャンプーセル選択ー空白セル 書式ー行ー表示しないで、できる。これをマクロの記録を採れば良い。 ーー 質問の件は 標準モジュールに Sub test01() d = Range("A65536").End(xlUp).Row ' MsgBox d For i = 1 To d If Cells(i, "D") = "" And Cells(i, "H") = "" Then Rows(i).Hidden = True End If Next i End Sub

関連するQ&A

  • エクセルVBAで質問です。

    エクセルVBAで質問です。 不用な空白行を削除したいのですが、どのようにコードを書いたらいいでしょうか? 添付の画像のような表を作っています。 添付のではAAからGGまでデータが入っていますが、いつもデータ数は違います。ただし20行目 より多くなることはありません。データ範囲の5行目から20行目まででおさまります。 このような条件で、データのない空白行を自動で削除するようにしたいと考えています。 よろしくお願いします

  • エクセル VBA 同じ内容のセルの行を合わせたい

    売上集計表があり、A列に全商品のコードが表示されてます。 毎日の売上商品のデータを商品コード別に数量を入力して同じ内容のセルの行の位置を合わせる作業を毎日行っています。 毎日の売上データはエクセルで集計されたデータを貼り付けて行っています。これをなんとかVBAで処理したいのですが、どうしたらいいのかわかりません。 内容としてはA列に全商品の商品コードが既に入力されています。 月のはじめは、B列とC列に一日の集計データそのまま貼り付けます。 A列の商品コードと同じ商品コードの行に合うまで空白のセルを挿入していきます。 次の日は、D列とE列、その次はF列とG列と右に貼り付けしていきます。 商品コードは約3000件、毎日の集計データ数は約500件です。 どうか教えてください。 完成例)   A列   B列   C列     D列    E列       F列    G列   H列   I列 商品コード    10/1分        10/2分            10/3分       10/4分・・・続く        商品コード 数量   商品コード 数量      商品コード数量 CZ1.000  CZ1.000   10    CZ1.000   20 CZ1.005                                CZ1.010  15   ←セルの挿入で CZ1.010  CZ1.010   30                    CZ1.020 30    下げる作業を CZ1.015                                CZ1.030  10 毎日行ってます。 CZ1.020  CZ1.020   11   CZ1.020    20       CZ1.040  40 CZ1.025 CZ1.030  CZ1.030   11   CZ1.030    10 よろしくお願いします。

  • エクセル非表示VBA

    こんばんわ。 エクセル初心者で勉強中です。 今下記画像のようなデータをエクセル2007で作成しています。 データは2行目から1000行目位まであるとします。 そこで質問なのですが、黄色の行のように その行のすべてのセルの値が空白の場合、行を 非表示にしていくコードはあるのでしょうか。 現在目視で非表示にしているので、できればVBAで素早くしたいのですが。 よろしくお願いします。

  • エクセルVBAについて

    VBAに関しての質問です。 A列に日付(10行目から) B列にその日の売上が 300行(300日分)入力されてる表があるとします。 C列にその日を含めた過去N日間の最大の売上を表示させたいのです。 例えば 過去5日間なら過去5日間の最大売上げを毎日表示させたいのです 当然この場合は5日間なのでCの13行目までは空白になります。 「N」日はA1セルに任意の日数で入力することによって希望の期間の数値 が表示できるようにしたいのです。 関数を使ってできるのいですが、事情がありましてエクセルのマクロの 繰り返しのプログラムでやりたいのですが VBAに関しては全く素人ですの。どなたかご教授願えませんでしょうか よろしくお願いします。

  • Excel VBA の質問です

    Excel VBA でやりたいことがあるのですが、自分ではわからず困っています。。 データ例として、画像を添付しました。 実行前は、A列に名前、B列にそれぞれ選手の打点(ただし、最初の行は空白)というデータです。 これを実行後のように(A列、B列という場所は変わらずに)、それぞれの選手の打点平均を空白に算出するコードを教えてほしいです(ただし、各打点の入っていたデータはクリア)。 なお、画像例は「中田」までしか載せてませんが、その下にも続いていてデータ最後まで計算させるということをやりたいです。 ぜひ、ご教授願います。

  • エクセルマクロでデータの検索と転記方法

    エクセル2000です。 sheetAの 10行~165行に表Aがあります。 途中に、空白行や小計行もかなりあります。 C列のコード(文字列、数値両方あります)をキーにして、SheetBの4行目から91行目までの表B(A列にコードがあります)のB列の数値を、sheetAの10行~170行のD列に転記したいのです。sheetAの表の小計行のC列は空白です。SheetBの表Bのコードは、sheetAの表Aのコードの一部しかありません。ですから、sheetAの表AのコードがSheetBの表Bになかったらそこは何も転記しません。 わかりづらい説明かと思いますが、マクロの記述をお教えいただければ幸いです。

  • 行に印のある列を残し他は列削除

    上段の表の1行目の"●"印の列のみ表示し1行目空白は列削除し下段の表にしたいのですがどなたかVBAコードが解る方宜しくお願いします。

  • エクセルVBAでのまとめ計算

     初めまして、よろしくお願いします。 データーで    A      B     C     D      E ・・・ 1              5     7      2 2              3     7      0 3 4              6     3      6 5              2     8      3 6              0     3      4 ・     ・      ・      ・      ・ ・     ・      ・      ・      ・ 100             3     4      5 という表がありますA列には(C列の値/(D列以降の平均値))をB列には(C列の値-(D列以降の平均値))を表示させたいと思います。たまに3行のような空白の行があります。関数式ではなく、VBAで解る方、よろしくお願いします。

  • エクセル2010 エラー行を削除

    こんばんは、エクセルのエラー行について解らないので、教えて頂けませんか? 画像の様なデータがあり、A6,B6の様に両方にエラーがある行、A12,B12の様にB列のみにエラーがある行のあるデータがあります。 それを、D列、E列の様に空白にする方法はありますか? ちなみに、2万行ほどありますので、一括で出来ればと思います。 詳しい方、よろしくお願い致します。

  • Excel 条件に一致する日付の求め方について

    こんにちは!初めて質問します。 Excel関数の使い方がわからずに困っています。 売上と在庫管理をそれぞれ別シートに入力しています。 売上が出た場合、在庫管理シートに売上日が表示されるようにしたいのです。 シートは、このような形で、それぞれデータを入力しています。 売上表シート A列  B列    C列      D列 日付  顧客名  商品コード  売上金額 在庫管理シート A列   B列     C列    D列    E列 入荷日 商品コード  商品名  売上日  売上金額 商品コードが一致する売上表シートの日付を、在庫管理シートの売上日に表示させたいのですが、 上手くいきません。 売上金額はSUMIF関数で処理することができました。 Excelに関する知識も乏しく、非常に困っています。 なにぶん初めての質問のために質問内容も的を得ず、わかりづらいかもしれませんが、 どなたかお分かりになる方、是非ご教示くださいませ。

専門家に質問してみよう