0

私は、ユーザーが「テスト」のリストを調べて、テストが成功したか失敗したかをチェックするプロジェクトに取り組んでいます。テストが失敗した場合、2 番目の列の「失敗」ボックスをチェックし、そのテストが失敗した理由についてメモを記録します。セットアップは次のようになります。

ワークシート 1 - トップ画像

ユーザーが「テスト」を終了して「レポートの生成」ボタンをクリックすると、失敗したテストの概要と関連するメモが別のワークシートにコンパイルされるように、マクロをプログラムする必要があります。

ワークシート 2 - 失敗したテストの概要 (下の画像)

開発経験はありますが、Excel マクロの構文には詳しくありません。少し調べてみましたが、まずはこちらで質問させてください。基本的に、「失敗」列のすべてのセルをループする必要があります。「真」の値にヒットするたびに、セルの右側のセルにメモの内容を出力し、テストの名前を左側の 2 つのセルに出力して、他のワークシートに出力します。これにどのようにアプローチするか、またどのようなタイプの関数を使用するかを教えてください - ご協力に感謝します!

更新:ここに答えてください:

テスト、失敗、メモという 3 つの名前付き範囲を作成しました。テストのリスト (ヘッダーを除く) を選択し、アドレス ボックスにテストを入力するだけです。名前付き範囲が作成されました。Fails と Notes についても同じことを行います。次に、2ページ目:

[A3]=INDEX(tests,MATCH(TRUE,fails,0))
[B3]=INDEX(notes,MATCH(TRUE,fails,0))
[A4]=IFERROR(INDEX(OFFSET(tests,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")
[B4]=IFERROR(INDEX(OFFSET(notes,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")

(A4 と B4 を必要なだけ下にコピーします。)

4

1 に答える 1

1

真の値に対してオートフィルターを実行し、表示されているセルを新しいシートにコピーします。そのための VBA コードは次のようになります。

Sub AutoFilterAndCopy()
Dim shtNew As Worksheet, shtOrg As Worksheet

Set shtOrg = ActiveSheet
Set shtNew = Sheets.Add

With shtOrg.range("A1").CurrentRegion
    .AutoFilter Field:=3, Criteria1:="True"

    .Columns(1).SpecialCells(xlCellTypeVisible).Copy shtNew.Cells(2, 1)
    .Columns(4).SpecialCells(xlCellTypeVisible).Copy shtNew.Cells(2, 2)

    .AutoFilter
End With

End Sub

ここでの解決策:

テスト、失敗、メモという 3 つの名前付き範囲を作成しました。テストのリスト (ヘッダーを除く) を選択し、アドレス ボックスにテストを入力するだけです。名前付き範囲が作成されました。Fails と Notes についても同じことを行います。次に、2ページ目:

[A3]=INDEX(tests,MATCH(TRUE,fails,0))
[B3]=INDEX(notes,MATCH(TRUE,fails,0))
[A4]=IFERROR(INDEX(OFFSET(tests,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")
[B4]=IFERROR(INDEX(OFFSET(notes,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")

(A4 と B4 を必要なだけ下にコピーします。)

于 2012-10-08T18:06:36.913 に答える