私は VBA を初めて使用し、現在更新中の要件追跡スプレッドシートを他の人から継承しました。要件はすでにグループ化されており、現在の VBA コードで正しく集計されています。更新しようとしている特定のブロック (たとえば、複数のレベルがあります):
For groups = 1 To i ' Level 3 grouping
Range(Cells(Start(groups), 1), Cells(Finish(groups), 1)).Rows.Group
Range("G" & Start(groups) - 1).Formula = "=COUNTIF(E" & Start(groups) & ":E" & Finish(groups) & ",""Requirement"")"
Range("H" & Start(groups) - 1).Formula = "=COUNTIF(H" & Start(groups) & ":H" & Finish(groups) & ",""Ok"")"
Next
COUNTIF に条件を追加する必要があるため、COUNTIFS を使用しています。レベル 4 ではない要件 (レベル 1、2、3、または 4 のいずれか) のみをカウントしたい。次のロジックのバリエーションを試しました。
For groups = 1 To i ' Level 3 grouping
Range(Cells(Start(groups), 1), Cells(Finish(groups), 1)).Rows.Group
Range("G" & Start(groups) - 1).Formula = "=COUNTIFS(E" & Start(groups) & ":E" & Finish(groups) & "," & "Requirement" & ",S" & Start(groups) & ":S" & Finish(groups) & ",""<>4"")"
Range("H" & Start(groups) - 1).Formula = "=COUNTIF(H" & Start(groups) & ":H" & Finish(groups) & ",""Ok"")"
Next
マクロを実行する前に、正しいセルに数式を手動で入力しようとしましたが、数式は合計を正しく更新しました。ただし、マクロを実行すると、常に次のメッセージが表示されます: RunTime Error '1004' Application_defined or object_defined error
私はたくさんの見積もりを持っており、いくつかはおそらく統合される可能性があることを認識しています。ただし、ロジックが失敗する理由についてはもっと心配です。助けていただけますか?私は、このさまざまな道の探索に多くの時間を費やしてきました。
前もって感謝します!
この後、「レベル 4」の各要件 (つまり、その行と次の 2 行) を非表示にする方法を学習する必要がありますが、それは別のトピックです。最初に簡単なロジックを試してみようと思いました..