Utilizzare una macro per selezionare una tabella Corpo Modificato

Mike ha una tabella di Excel definito e vuole selezionare solo la parte di dati della tabella utilizzando VBA. Egli sa di poter utilizzare il metodo DataBodyRange.Select, ma questo sembra solo per selezionare tutto tranne la riga di intestazione. Nel tavolo di Mike la prima riga contiene intestazioni, l'ultima riga e all'ultima colonna contengono formule, e la prima colonna contiene intestazioni di riga, così lui vuole escludere tali dalla selezione. La tabella può espandersi sia per righe e colonne, quindi ha bisogno di un modo per selezionare questi dati dinamicamente. Ogni pensiero su come questo può essere fatto?

È possibile creare tabelle definite (come cita Mike) utilizzando lo strumento Tabella nella scheda Inserisci della barra multifunzione. Normalmente trovo meglio a entrare nel mio intestazioni delle colonne e dei miei dati, metto le formule di sintesi nell'ultima colonna della tabella, ma non li metto in ultima fila. Ho poi selezionare una cella nella tabella e utilizzare lo strumento Tabella per definire l'intera area del tavolo.

Una volta che una tabella è definito in questo modo, è possibile utilizzare la scheda Progettazione del nastro per modificare il modo in Excel vede il vostro tavolo. Fare clic sulla scheda e assicurarsi che, nel gruppo Tabella Opzioni stile, che si specifica la tabella ha una riga di intestazione, totale riga, prima colonna (per le intestazioni delle colonne), e ultima colonna (per le formule di sintesi). È quindi possibile utilizzare una macro come il seguente per capire e selezionare il corpo della tabella:

Sub SelectTableBody ()
Dim rTableData come gamma

Con ThisWorkbook.Worksheets (1)
Impostare rTableData = .ListObjects ("Tabella 1"). DataBodyRange
Set rTableData = rTableData.Offset (0, 1) _
.Resize (, RTableData.Columns.Count - 2)
End With

rTableData.Select
End Sub

La prima istruzione Set imposta la gamma rTableData uguale a quello Excel considera il corpo della tabella di dati. Questo include tutto tranne l'intestazione e la riga totale. (Perché Excel include la prima colonna e l'ultima colonna quando hai progettato quelle colonne di essere speciale mi batte.) Il prossimo Set dichiarazione poi regola la gamma verso l'interno da una colonna di sinistra e una colonna a destra. Il risultato è che rTableData rappresenta solo l'intervallo di dati che si desidera.

Questo approccio è di natura dinamica, il che significa che si regola automaticamente (beh, ogni volta che si esegue) ogni volta che si aggiungono o si eliminano righe o colonne. Non sarà regolare correttamente se vi capita di eliminare sia le prime o le ultime colonne della tabella dei dati; assume le colonne non saranno mai parte della gamma corpo che si desidera.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (8730) si applica a Microsoft Excel 2007, 2010 e 2013.