大きなシートがあります。私はそのシートの複数のフィルターを動的な位置の列ヘッダーに設定する必要があります。フィルタが設定されたら、シートの特定の列を「11月」の列見出しを見つけて、その列の値の合計を取得し、その特定の合計値を別のワークシートにインポートする必要があります。 フィルターを複数の列に設定できる部分までコードを書いていますが、列ヘッダーを見つけてその列を追加するのが難しいと感じています。以下はこれまでに書いたコードです。VBA - 特定のヘッダーを持つ列を検索し、その列のすべての行の合計を見つけます。
Sub Button2_Click()
Dim colName As Long
Dim colName1 As Long
Dim colName2 As Long
Dim r As Long
SearchV = Range("A8:DD8").Find(What:="Nov", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
lastrow = Cells(Rows.Count, SearchV).End(xlUp).Row
colName = Range("A8:DD8").Find(What:="Teams", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
colName1 = Range("A8:DD8").Find(What:="Items", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
colName2 = Range("A8:DD8").Find(What:="Domain", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colName, Criteria1:="ST Test", Operator:=xlOr, Criteria2:=""
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colName1, Criteria1:="Variance", Operator:=xlOr, Criteria2:="(Blanks)"
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colName2, Criteria1:="9S", Operator:=xlOr, Criteria2:="(Blanks)"
列ヘッダーは常に8行目から開始します。上記の行にはいくつかの憂慮すべき情報があります。だから私が欲しいのは、列「11月」がH列にあるとします。合計は、H9から最後の行の最後まで計算する必要があります。列が 'H'列のときにこの式を使用しました。
Cells(lastrow + 1, colName3).Formula = "=SUBTOTAL(9,H9:H" & lastrow & ")"
しかし、列「11月には、」常に「H」の行に存在しませんので、私は動的に列を選択するために私のコードを変更する方法を見つけ出すことはできませんよ。
おかげで多くのことを、このコードを試すのは、ワークシートは、この
のように見えるとしましょうarth。私はそれを使って自分の仕事の大部分を取り除くことができました。しかし実際の問題は、行の合計を追加することです。私は今このコードを使用しています。 'SumV = SV& "9:"' 'SumW = SV&lRow' '細胞(lRow + 1、SV).Formula = "= SUBTOTAL(9、SumV:SumW)"' しかしこれはExcelで次の値を返す "= SUBTOTAL(9、SumV:SumW)" そして、#NAMEを取得していますか?エラー。 –
Umm、 'SV'とは何ですか? –
申し訳ありませんが、私は明確ではありませんでした。あなたがコード内でcolNameとして言及していたものは、すでに他の場所でcolName変数を使用していたので、SVに名前を変更しました。だから基本的に、私がやろうとしているのは、ある値(例えば、W9)を得るために列と行を連結することです。 SumVにはW9、SumWにはW2128の値が得られました。しかし、小計関数を使用すると、実際の値の代わりに同じものが挿入されます。私もこのように使ってみました。 '= SUBTOTAL(9、"&SumV& ":"&SumW& ")'となります。しかし、それでも例外がスローされています。 –