2

問題: 列 A と列 B があります。列 A は予測可能で、列 A の行が何千もあります。列 B には、列 A ごとにさまざまな行があります。たとえば、列 A には値 REQ_000021 があり、列 B には 5 つの行があります。これらは問題ありません。削除する必要がある行は、列 A ごとに列 B が 1 つしかない行です。

これは一般的なことではないことはわかっているので、これを行うための VB スクリプトを見つけることができませんでした。サイトで許可があれば写真を投稿します。最初に 15 担当者ポイントが必要です。

編集:
stackoverflow で改行を行う方法を学んだばかりなので、次のようになります。

Col A Col B 
----------------------------------
スコット US
ドイツ
スペイン
-------- --------------------------
ブライアン 米国
---------------------- ------------
マーク US
----------------------------------
イタリア
ティムポルトガル
アイルランド
----------------------------------

列 A と列 Bに 1 つの行があるため、ブライアンとマークを削除し
ます。列 A の行ごとに複数の列 B の行があるため、スコットとティムはそのままにしておきます。Scott と Tim の列 A は大きなマージされた行であることに注意してください。
それが私がやろうとしていることです。

編集:
スコットの答えによると、これは出力です:
これを見ている他の人のために明確にするために、いくつかのマーキングにキャプションを付けました.
スコットのソリューションからの出力


編集: この次の VB スクリプトは、列 C に「DELETE」値を持つ行を削除
します。Excel でマクロとして使用しました。マクロを初めて使用する場合は、Excel 2007 で開発者ビューを有効にして、VB 画面に切り替えることができるビューにアクセスしてください。

サブ deleteDeleteString()
Dim rng As Range、cell As Range、del As Range
strCellValue を文字列として暗くする
rng = Intersect(Range("C:C"), ActiveSheet.UsedRange) を設定します。
For Each cell In rng

strCellValue = (セル.値)
'DELETE が列 C のセルで 0 回以上見つかった場合、その行全体を削除します
InStr(strCellValue, "DELETE") > 0 の場合
del が何もない場合
デル = セルに設定
Else: 設定 del = Union(del, cell)
終了条件
終了条件
次のセル
エラー時再開次へ
del.EntireRow.delete
サブ終了
4

1 に答える 1

1

これは、データのフォーマット方法の編集に基づく新しい数式です。

次の式を C1 に配置し、列を下方向に実行して、削除する行を取得します。

=IF(OR(ISBLANK(A1),ISBLANK(A2)),"","DELETE")

最初に列 A のセルの結合を解除する必要がある場合としない場合がありますが、結合されたセルを Excel が処理する方法の規則を考えると、問題にはなりません。提供されたデータセットでこれをテストしたところ、セルを結合してもしなくても機能しました。

ここでは必要ないため、VBA ソリューションは提供していません。この数式を実行して、列 C で「DELETE」をフィルター処理し、行を削除します。

于 2012-06-19T20:41:13.033 に答える