Consulta una colonna utilizzando l'intestazione della colonna anziché il numero della colonna

Quindi ho questo foglio di calcolo con diverse colonne di dati in loro. Una delle colonne è intitolata "Stati" e ha l'abbreviazione di stati diversi in quella colonna. Un'altra colonna è intitolata "Last_IVR" e presenta delle righe che dicono "Completate" o dicono "non completate". Ho scritto un codice che filtra queste due colonne in base agli stati o se è completato o no. Ma l'unico problema in cui sto eseguendo è che non tutti i fogli di lavoro hanno la colonna degli Stati nella stessa posizione. Ciò che intendo con questo è che, diciamo sul primo foglio di lavoro, "Stati" è nella colonna "F" ma in un altro foglio di calcolo, "Stati" potrebbe essere nella colonna "C". Così c'è un modo, posso manipolare il mio codice qui sotto, quindi si riferisce all'intestazione della colonna piuttosto che al numero della colonna. Grazie in anticipo per qualsiasi aiuto.

Sub CFunctions() Dim LR As Long LR = Range("A" & Rows.Count).End(xlUp).Row Dim i As Long Dim State As Range Dim Last_IVR As Range 'Removes rows that says "Complete" For i = LR To 2 Step -1 Set Last_IVR = Range("G" & i) If InStr(Last_IVR, "Complete") >= 1 Then Rows(i).Delete End If Next i 'Removes all states that are not "TX" For i = LR To 2 Step -1 Set State = Range("F" & i) If InStr(State, "TX") = 0 Then Rows(i).Delete End If Next i MsgBox "Completed" End Sub 

È ansible utilizzare la corrispondenza proprio come la function Foglio di calcolo per cercare l'intestazione nella prima row.

Sintassi e altre properties; possono essere trovate qui: https://msdn.microsoft.com/en-us/library/office/ff835873%28v=office.15%29.aspx o qui: Metodo Application.WorksheetFunction.Match

Una volta che l'indice viene restituito a formare la function di corrispondenza, è ansible utilizzare il numero di intervalli di riferimento nelle celle (x, y).

 Application.worksheetfunction.match("State", [range referencing rows of headers],0) 

Ho avuto questa function che restituirà la lettera Colonna quando hai inserito il suo numero come parametro:

 Function Col_Letter(lngCol As Integer) As String 'Returns the column letter using its number as parameter Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function Dim vArr Function Col_Letter(lngCol As Integer) As String 'Returns the column letter using its number as parameter Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function vArr = Split (Cellule (1, lngCol) .Address (vero, falso), "$") Function Col_Letter(lngCol As Integer) As String 'Returns the column letter using its number as parameter Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function Col_Letter = vArr (0) Function Col_Letter(lngCol As Integer) As String 'Returns the column letter using its number as parameter Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function 

Spero che questo ti aiuti!