Ho un foglio di grandi dimensioni. Devo impostare più filtri in quel foglio per intestazioni di colonne in posizioni dinamiche. Una volta impostati i filtri, devo trovare la particolare colonna nel foglio con l'intestazione di colonna "Nov" e quindi ottenere la somma di valori in quella colonna e importare quel particolare valore di somma in un foglio di lavoro differente. Ho scritto il codice fino alla parte in cui posso impostare i filtri su più colonne, ma trovo difficile trovare l'intestazione della colonna e aggiungere quella colonna. Di seguito è riportato il codice che ho scritto finora.VBA: trova una colonna con un'intestazione specifica e trova la somma di tutte le righe in quella colonna
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)"
Le intestazioni delle colonne iniziano sempre dal 8 ° fila. Alcune informazioni inesatte sono presenti nelle righe sopra. Quindi, quello che voglio è, supponiamo che la colonna "Nov" sia nella riga H. La somma dovrebbe essere calcolata da H9 alla fine dell'ultima riga. Avevo usato questa formula quando la colonna era nella colonna 'H'.
Cells(lastrow + 1, colName3).Formula = "=SUBTOTAL(9,H9:H" & lastrow & ")"
ma la colonna 'Novembre' non sarà sempre presente nella riga 'H', quindi non sono in grado di capire come cambiare il mio codice di scegliere la colonna in modo dinamico.
Grazie mille per il vostro aiuto Siddh arth. Sono riuscito a tirare fuori gran parte del mio lavoro con quello. Ma il problema attuale sta riuscendo ad aggiungere la somma delle righe. Sto usando questo codice adesso. 'SumV = SV e "9:"' ' SumW = SV & lRow' ' Cellule (lRow + 1, SV) .Formula = "= SUBTOTALE (9, SumV: SumW)" ' Ma questo sta restituendo il seguente valore in Excel "= SUBTOTAL (9, SumV: SumW)" E sto ricevendo #NOME? errore. –
Umm, Cos'è 'SV'? –
Mi dispiace non essere stato chiaro. Qualunque cosa tu abbia menzionato come colName nel tuo codice, l'ho rinominato in SV, poiché stavo già usando la variabile colName altrove. Quindi, in sostanza, quello che sto cercando di fare è concatenare la colonna e la riga per ottenere un certo valore (ad esempio W9). Quindi ho ottenuto il valore di W9 per SumV e W2128 per SumW. Ma quando uso la funzione Subtotale, la stessa viene inserita al posto del valore effettivo. Ho provato a usarli così. '= SUBTOTAL (9," & SumV & ":" & SumW & ")'. Ma anche questo è un'eccezione. –