• ベストアンサー

EXCELでの複数条件に合う行の削除

以下のようなEXCELデータがあるのですが、 A列が連番(上のセルに+1したものが下のセル)でかつB列が上のセルと下のセルが同じ値、かつC列が上のセルと下の値が同じ値だった場合にその連続する行を削除したいのですが具体的にはどのような式をつくればよいのでしょうか? A B   C     1 6個  100円 3 2個  200円 4 4個  50円 5 4個  50円 1 9個  100円 2 8個  400円 4 1個  400円 1 2個  200円 この場合、求めたい最終的な表は A B   C     1 6個  100円 3 2個  200円 1 9個  100円 2 8個  400円 4 1個  400円 1 2個  200円 になります。 ご存知のかたがいらっしゃいましたらよろしくお願い致します。

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

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

4 4個  50円 5 4個  50円 の2行が消えればいいのですか? D2=IF(OR(AND(B2=B3-1,C2=C3,D2=D3),AND(B2=B1+1,C1=C2,D1=D2)),"消す","") としてD2の数式を下方にコピーして「データ」「フィルタ」「オートフィルタ」でD列が"消す"の行を抽出して削除する。

masya1999
質問者

お礼

ありがとうございます。望んでいたことができました!お早いご対応感謝致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#02です。D3セルの式は以下に訂正します。 =IF(OR(AND(A3=A2+1,B3=B2,C3=C2),AND(A3=A4-1,B3=B4,C3=C4)),1,0)

masya1999
質問者

お礼

ありがとうございます!大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

D3セルに以下の式を入れて他のセルにコピーすると条件に合うセルは1になります オートフィルタで1の行を抽出して行削除すればよいでしょう。 =IF(AND(OR(A3=A2+1,A3=A4-1),OR(B3=B2,B3=B4),OR(C3=C2,C3=C4)),1,0) ただしD2セルはこのままだと#VALUE!エラーとなります。A1セルのタイトルをダミーの数値にすれば回避できます。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

VBA(マクロ)を使えば一発です。 簡単ですから試してみてください。ただし、必ずバックアップをとってからにしてくださいね。 手順は以下の通りです。 1.AltキーとF11キーを同時に押してVisualBasicEditorを呼び出します。 2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。 Sub test01() With ActiveSheet x = .UsedRange.Cells(.UsedRange.Count).Row For i = x To 2 Step -1 If .Cells(i, 1) - 1 = .Cells(i - 1, 1) _ And .Cells(i, 2) = .Cells(i - 1, 2) _ And .Cells(i, 3) = .Cells(i - 1, 3) Then .Rows(i & ":" & i - 1).Delete Next End With End Sub 3.再度Alt+F11キーでワークシートへもどります. 4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行します。

masya1999
質問者

お礼

ありがとうございます!マクロについて勉強しようと思います。大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelで複数条件を満たすのは何行目?

    Excel VBAにてどういう方法があるのか考えています。 A列はHかL、B列は1,2,3のようなデータにおいて  条件1:A列はH  条件2:B列が2 を満たす行は何行目かを探して、C列のその行のセルに コピーしていたデータを貼り付けたい (この場合、2つの条件で重複する行はありません) A列 B列 C列 H  1 H  2  ■←ここへ貼り付け H  3 L  1 L  2 L  3 この場合は、2行目なので、C列の2行目のセルをselectしてpasteしたいのです。 良い方法をご存じの方、よろしくお願いいたします。

  • Excelにて複数条件を満たす行の特定のセルの値を返す関数

    Excelにて複数条件を満たす行の特定のセルの値を返す関数を作りたいのですが、上手く行きません。 <Sheet1>   A列  B列  C列 1 2008/6/1 ★  320 2 2008/6/1 ☆  300 : : : Sheet2のA1に、「A列が2008/6/1で、B列が☆の場合、C列の値を返す」という関数を入れたいのですが、どうも上手く行きません。 良い式がありましたら教えて下さいm(_ _)m

  • 複数の条件に合う行の特定のセルを返す

    ほぼ同じ質問をいくつか見かけたのですが、その式を自分の内容に置き換えても全く希望通りの結果が出ず、質問させてください。 2 1 Aさん 4 1 Bさん 5 1 Cさん 2 2 Dさん 5 2 Eさん セルのA1には「2」、B1には「1」、C1には「Aさん」と入ったシートがあり、例えばセルのD1に A列、B列ともに「2」が入力されている4行目のC列「Dさん」という値が反映して欲しいのですが、その関数が分からなく困っています。 他にもA列が「5」、B列が「1」の結果が(Cさん)が欲しい時もあり、条件にはA列の値とB列の値を使う方法で考えています。 お知恵を貸してください。

  • 削除して空白になった行を下から詰めたい

    A行には項目の名前があり、A列には番号が上から1,2,3・・と振られています。 そして、B2からR999までにはそれぞれデータが入っています。 このとき、任意のR列のセルを選択したまま、マクロを実行すれば、 任意の行のB列からR行が削除されて、下から上に詰めるように(空白にならないように) するマクロを作りたいです。(A行に割り振っている番号を消してしまうと 連番が崩れるので、B列からR列までを詰めていくような感じです) 例: 今、R11のセルを選択しています。希望のマクロを実行すると、C11~R11が削除されて    C12以降のデータが丁度上に移行するような感じです。 どのようなコードを作れば良いのか、お力をかしていただければ幸いです(/_;)

  • Excel 範囲内で条件を満たす異なる列の合計

    範囲内で条件を満たすセルで、異なる列の値を合計したい。 A1からA5に{10,20,30,40,50}という値が B1からB5に{0,1,2,3,4}という値が C1からC5に{5,6,7,8,9}入っている事とします。 A1:A5の範囲で複数の条件をつけます。 B列ではA列のセルの値が15<A<35となる、A2とA3と同じ行であるB2とB3の値 C列ではA列のセルの値が25<A<45となる、A3とA4と同じ行であるC3とC4の値 全部でB2,B3,C3,C4のセルの値を合計を返すセルを作成したい。 この場合目的のセルが返す値は1+2+7+8で18となる。 補助行を作ってでも構いませんので、このような加算が可能とするセルの作り方はないでしょうか。 Excel2000を使用しています。どうかよろしくお願いします。

  • EXCEL 2003で条件に合った合計を求めたい

    ______A ____B____ C_____D 1___111___ 1 ___10___ 60 2___111___ 2 ___10 3___222___ 2 ___10 4___333___ 1 ___10 5___333___ 2 ___10 6___333___ 3 ___10 7___444___ 1 ___10 8___444___ 3 ___10 9___555___ 1 ___10 Excel 2003環境において、上記A1:C9を対象に関数で下記条件を元に数式をD1に入力して値を求めたいです。 条件: A列の同じ値のセルを一つのグループとし、かつその中で、B列で1から始まる連番となっているグループを対象にC列のセルを合計する。 上記のセル範囲で条件に合う行は1,2,4,5,6,9行目で答えは60になります。 SUMPRODUCT関数やIF関数を併用してみましたが、うまく作ることができませんでした。 なんとか作業列やVBAを用いずに一つの数式で済ませたいです。 よろしくお願いします。

  • 2つの値が同じという条件で行を消したい。

    下のような表で、1列目、2列目の値がともにダブっている行のみを消したいです。 1   A 1   B 1   B 1   C 2   A 3   C 3   A 3   C でいうと2、3行めの 1   B と 6、8行めの 3   C がダブっているので それを行ごと消して 次のようにしたいのです。 1   A 1   B 1   C 2   A 3   C 3   A ちなみに各行には他の列にもデータがならんでいます (3   A   あ   カ・・・・・・のようになっています)。 また、ダブるのは2行に限らず3行4行にわたるものもあります。 これってけっこう難しいのでしょうか? ぜひアドバイスを。

  • エクセルのマクロ(行を挿入し連番を振る)

    ボタンを押すと以下のことを実行するマクロを作成することはできますか? A列2行目から 書類a 書類b 書類c 書類d 書類e C列2行目から 5 3 2 4 3 と入っています。C列は各書類の枚数です。 ボタンを押すと書類aと書類bの間に4行空白行が挿入され、A列とC列は増やした4行にそれぞれ書類a、5がコピーされ、B列には2列目から6列目まで1.2.3.4.5と連番が振られる。 というマクロです。 B列C列で1/5 2/5 3/5 4/5 5/5 であるという表現がしたいのです。(/は入りません) 書類が1枚の場合はB列C列共に空白で1/1とは入りません。 C列に入る書類の枚数により行が挿入されその書類の枚数分の連番が振られるようなマクロが作りたいです。 毎日何百行も手作業で挿入しコピーし連番を振る作業をしています。 決まった行数を増やすとか上の行をコピーするマクロならわかるのですが、C列の値を見て挿入する行数を判断するようなマクロができるのかわかりません。 どなたか教えて頂けないでしょうか。

  • Excelマクロで行を分割してコピーしたいのですが・・・

    いろいろなサイトで調べたのですが、方法が見つからずご質問させて頂きます。 Excelシートの中で値が入っている行まで順番に読み、A列のセルの値が'東京'かつB列の値が'2'以上の行があった場合に、その行をB列の値の数だけその行の下にコピーで挿入したいのですが、どのようなマクロにすれば良いかご教授頂けないでしょうか? 例) セルA1='東京' セルB1='3' の場合、 ---------------------------------- セルA1='東京' セルB1='1' セルA1='東京' セルB1='1' セルA1='東京' セルB1='1' ※セルB1を値の数だけ分割し、なおかつ値を'1'にする ※分割が終わったら、分割元の行を削除する ※その他の列の値はそのままコピーする 以上、宜しくお願い致します!

  • 条件にあてはまる場合、行挿入+値を移動させるマクロ

    Excel2003、WindowsXPを使用しています。 説明が分かり難いところがあるかもしれませんが、よろしくお願いいたします。 1.C列に値が入っていた場合、下に行を挿入。 2.挿入した行のB列に、C列に入っていた値を移動。 3.D列に値が入っていた場合、さらにその下に行を挿入。 4.挿入した行のB列に、D列に入っていた値を移動。 5.E列に値が入っていた場合、さらにその下に行を挿入。 6.挿入した行のB列に、E列に入っていた値を移動。 というように、C-E列に値が入っていた場合、下に行を挿入し、 挿入行にその値を移動させるマクロを教えてください。 (実行前)    A列     B列  C列  D列  E列   F列 ああああ  AAA  BBB  CCC  DDD  12222 うううう    EEE                   544 くくく     FFF  GGG  VVV        8 すす     TTT   BBB            4300 (実行後)  A列     B列   C列 ああああ  AAA   12222 ああああ  BBB   12222 ああああ  CCC   12222 ああああ  DDD   12222 うううう    EEE    544 くくく     FFF    8 くくく     GGG   8 くくく     VVV    8 すす     TTT    4300 すす     BBB   4300 上記実行後のように、マクロで出来たら…と思っています。 どうぞよろしくお願いいたします。

このQ&Aのポイント
  • DCP-J152Nで印刷する際に白紙のまま何も印刷されないトラブルについて相談します。
  • Windows10を使用し、USBケーブルで接続しています。関連するソフト・アプリはありません。
  • 電話回線の種類はひかり回線です。
回答を見る

専門家に質問してみよう