2

同様の例を見た(検索した)ことがありますが、探しているものとはまったく異なります。

シート A とシート B の複数のシートを持つ Excel のワークブックがあります。これらのシートには大量のデータがあるため、シート A からシート B に最も重要なデータを表示するには、必要な行のみをミラーリングします。 SheetAのセル値に応じて指定するには....シートAの値に応じて、シートBの行全体を削除する必要があります。

たとえば、シート AI には 10 個の値 (はい/いいえ) を持つ列 X があり、同じデータを数式でシート B にリンクしています。 「完了」... SheetA X2="はい" の場合、SheetB セル Y2="完了"... SheetA X3="いいえ" の場合、SheetB セル Y1="Missing" など。

したがってonly、セルの値が「完了」である SheetB の行がそこにあるようにしたいので、セルの値が「欠落」である行が自動的に削除されるようにします。このようにして、指定されたセルの「完了」値を持つ行のみを含むテーブルを作成します。

Excel にマクロがあることは知っていますが、VBA でコードを記述したことはなく、言語ハンドラーと変数については完全に理解できません。

数式で呼び出すことができるマクロを作成する方法はありますか? つまり、例) if(A10="Yes", "", delete row macro here)???

ありがとう!

4

2 に答える 2

1

あなたの質問の文言から、他のセルを変更するセルで使用できる関数を作成したいと思われます。それはできません。関数は、数式で使用される場合、セル自体の変更に制限され、他のセルには変更されません。

于 2013-06-21T03:27:06.507 に答える
0

猫の皮を剥ぐ方法は1つではありません。阿部が言ったように、数式を使用して他のセルを変更することはできません。ただし、VBA は使用できます。以下のサブは、範囲内のセルが1に等しい行全体を削除します。ただし、必要なものに等しくすることができます。

Sub DeleteRows()
Dim FoundCell As Range
Set FoundCell = Worksheets("SheetB").Range("YourRange").Find(what:=1)
Do Until FoundCell Is Nothing
    FoundCell.EntireRow.Delete
    Set FoundCell = Worksheets("SheetB").Range("YourRange").FindNext
Loop
End Sub

もちろん、これは余分な作業です。データを A から B にコピーしてから処理する代わりに、完了したセルを A から B にコピーするだけです。

于 2014-03-07T16:56:28.403 に答える