• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル データの該当条件と表の削除)

エクセルデータの該当条件と表の削除

tom04の回答

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >書き換えが出来る形が理想形です。 いちいち書き換えずにインプットボックスに3つの条件を入力する方法にしてみました。 「表」ではなく行すべてを削除しています。 Sub Sample1() Dim i As Long, k As Long, cnt As Long, myRng As Range Dim str As String, myCnt As Long, myVal str = Application.InputBox("対象列番号をアルファベットで入力") myVal = Application.InputBox("数値を入力") myCnt = Application.InputBox("検索個数を入力") On Error Resume Next '←念のため★ For k = 1 To Cells(Rows.Count, str).End(xlUp).Row Step 8 If WorksheetFunction.CountIf(Cells(k, str).Resize(8), "<=" & myVal) >= myCnt Then Set myRng = Cells(k, str).Resize(8) Exit For i = k End If Next k If Not myRng Is Nothing Then For i = k To Cells(Rows.Count, str).End(xlUp).Row Step 8 If WorksheetFunction.CountIf(Cells(i, str).Resize(8), "<=" & myVal) >= myCnt Then Set myRng = Union(myRng, Cells(i, str).Resize(8)) End If Next i End If myRng.EntireRow.Delete shift:=xlUp End Sub こんな感じではどうでしょうか?m(_ _)m

gekikaraou
質問者

お礼

回答ありがとうございます。 マクロで開くインプットフォーム初めてでした。 こんな事も出来るのですね、内容は、ばっちりでした、ありがとうございました!

関連するQ&A

  • VBA 指定条件を満たすデータ表を探したい

    VBA初心者です。 以下のような事をVBAで実現したいのですが、どのようにすればいいのでしょうか。 (本日のお昼頃に似たような質問をして早速回答をいただき解決しました。ありがとうございました。今回は条件の表示位置などが異なる場合です。) 添付画像のような数値データ表があります。 データ表が1から5まであります。 左上にそれぞれのデータ表での数値の検索条件1と2が記載されています。 データ表1は548以上になる位置を上から順に探していき、その数値以上になった時点でセルに色を付けたいです。そしてG列の条件1のセルに「合致」と表示したいです。 条件2の535以下は条件1を満たしたセルの次の行から検索をさせたいです。 (データ表1の場合は22行目からです。) そして、条件2を満たすものが出たらセルに色を付け、H列の条件2に「合致」と表示したいです。 また、例えばデータ表3とデータ表4の場合は条件2で合致するものがないのですが、その場合は H列の条件2に「該当なし」と表示したいです。 よろしくお願いします。

  • エクセル:マクロの起動条件

    お世話になります。 以下の条件でのマクロを起動する方法、及びそのマクロを教えてください。 《条件》 ブックを開いた時、あるシートのC列でデータが入っている最下行の行番号とA列のデータが入って最下行の行番号の差が100以下だった場合、マクロを実行する。 (なおC列の行番号の方が必ず大きいです) ちなみに実行したいマクロは1~6の手順です。 1.ブックを開いたとき 2.「入力用」という名前のシートのC列でデータが入っている最下行の行番号とA列のデータが入っている最下行の行番号の差が100以下だった場合 3.「入力用」というシートにかかっているシートの保護をはずし 4.データが入っているC列の最下行のA~Z列を選択して、50行分 下にコピーする。  (例えば、C列の最下行が350行の場合、A350~Z350まで を選択したあと400行まで下にコピーする。) 5.再度シートの保護をかけ 6.A列でデータが入っている最下行の1つ下のセルを選択する ちなみに、2の条件に当てはまらないときはマクロを実行しません。 またC列の最下行よりA列の最下行が大きい数字になることはないはずですが、もし同じかA列の方が大きい場合、「エラー:C列よりA列が大きくなっています」と画面に表示させたい。 なお、行番号の差:100、選択するA~Z行、50行分下にコピー は変わる可能性があるので、修正する場合どの部分を修正すればよいかも教えてください。 よろしくお願いします。

  • エクセルの表で条件を指定しての整列

    エクセルの表で条件を指定して整列させようとしています。 よろしくお願い致します。 画像のようにA列の商品名に、B列、C列の2つの条件が付いた商品がありD列に在庫数を入れています。 はじめは「画像C表」のように規則を設定したものに従って並んでいたのですが、操作ミスがあり「画像A表」のように行をバラバラにしてしまいました。 A列の商品名、B列、C列の条件とD列の在庫数の横の並び(1行づつの並び方)は元のままです。 A列の商品名、B列、C列の条件の記入内容は半角全角文字様々です。 「画像B表」のような在庫数だけ入っていない表は存在しています。 これを「画像B表」の整列規則に従って元のように並べ直すのに苦労しています。 例えば定型の表である「画像B表」のA2セルとB2セルとC2セルの値が共通の行の「画像A表」のD2セルの値を「画像B表」のD2セルに並べるという方法が出来ればと思うのですが数式をどう設定してよいのか判らない常態です。 実際の商品数(行数)は10,000程あり日常扱っている商品のためかなり焦っております。 確実に元に戻せればどのような方法でも結構です。 初歩的な内容かもしれませんが、よろしくお願い致します。

  • エクセルの表の列の最下行から指定数のデータで

    データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。

  • エクセルで表からデータを抜き出すには

    エクセルでつくったN×Mのサイズの表からデータを抜き出すよい方法をさがしています。具体的には、表の中から、1行目(の数値)と1列目(の数値)の組み合わせと対応して決まる、一定の条件に合ったものだけを抜き出して表示したいと思っています。よろしくおねがいします。

  • エクセル マクロ 範囲の検索と削除

    エクセル2010を使っています。 画像の様に、A列~CQ列にの8行の表があります。 そのE列には、画像の様な文字が挿入されています。 やりたい事は、その表内のE列の文字が【全て同じ】ならば表ごと削除し、空白部分は上に詰めたいと思います。 画像で言えば、1~8行、17~24行を削除すると言う事です。 詳しい方、教えていただけませんでしょうか。 よろしくお願い致します。

  • 複数条件に該当する行の個数を数えたい

    A列に1~32までの数のいずれかが入っており、 B列に1か0の数が入っています。 このデータが5000行に渡って入力されています。 A列が1で且つB列が1である行の個数 (5000行のうち、この組み合わせになるパターンはどのくらいあるか) を数えたい場合はどのようにすればよいでしょうか? 同様に A列が1で且つB列が0である行の個数 A列が2で且つB列が1である行の個数 A列が2で且つB列が0である行の個数 A列が3で且つB列が1である行の個数 A列が3で且つB列が0である行の個数 ・ ・ と計64通りのパターンに該当する数を調べたいのですが、 どのようにすればよいでしょうか? お教えください。

  • Excelでマクロを使用した削除に関して

    マクロ初心者です。 Excelにて、以下のような表データがあるとします。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50  a   b   c   d 3行  51  e   f    g   h    4行  52  i    j    k   l この表の中で、A列と1行目の値が同じになる交点となるセルの値"以外"を 削除して以下のように表示させたいのですが、 その方法がわかりません。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50      b       3行  51  e          h    4行  52          k    単純な行削除・列削除ではないため、 頓挫しています。お知恵を拝借したく、よろしくおねがいします。

  • エクセルの表の中から条件指定した個数を算出したい

    エクセルの表の中から指定した条件の個数を算出するにはCountif関数を使いますが、その個数の中から別の指定した条件の個数を算出する方法を教えてください 例 A         B おにぎり     10 おにぎり     2 そは       20 おにぎり     4 うどん      2 うどん      10 (続く) この表からA列の種類毎にB列の数値の範囲(4以上10未満、4未満、10以上)の個数を算出 したく苦労しております Countif関数の複数設定が出来ればいいのですが方法が解りません。 ご存知の方が居られましたら宜しくお願いします。

  • エクセルマクロで条件に該当する数値を探す

    エクセル初心者です。 シート1のA1~A18に1~18の数値がランダムに入っています。(重複した値は無し) シート2の3行目C3~T3にも1~18の数値がランダムに入っています。(空欄あり、重複した数値は無し) シート2の2行目C2~T2までは左から順に1~18の数値が入っています。(順位表示) 以上の条件下で下記の作業をマクロで実行させる式を教えてください。 シート1のA1~A18の値と同じ値を、 シート2の3行目C3~T3の中からどのセル(列)に入っているかを確認して、さらに該当する列の2行目C2~T2の値を、シート3の1行目A1~R1に表示させる。 例:シート1のA1=3、A2=2、A3=1の時、 シート2のC3=3、D3=1、E3=2でした。 シート2のC2=1、D2=2、E2=3です(この行の数値は毎回同じ) 上記の時シート3にはA1=1、B1=3、C1=2となります。 *シート1のA列A1~A18とシート3の1行目A1~R1の位置関係はリンクしています。(列→行) シート1 A列 1 3 2 シート2   A列 B列 C列 D列 E列 2行見出し見出し1  2  3 3行見出し見出し3  1  2 シート3 A列 B列 C列  2  1  3 ご理解頂けたでしょうか? 初心者ですので分かりやすい回答を宜しくお願いいたします。