2015-07-03 25 views
5

Desidero selezionare tutte le celle non vuote dalla cella corrente all'ultima cella della riga.Celle non vuote nell'intervallo di Excel C#

Se usiamo

currentRange.End[XlDirection.xlToRight] 

questo non è un buon approccio quando le cellule non vuoti non sono contigui link. Ad esempio, le celle A1, A2, A3, A5, A6 non sono vuote, quindi RangeA1.End[XlDirection.xlToRight] vanno solo fino a A3, ovvero l'ultima cella non vuota collegata a RangeA1.

Un'altra opzione:

CreateRange(currentRange, lastRangePossibleinRow).SpecialCells(...) 

Ho 3 domanda:

  1. currentRange.End[XlDirection.xlToRight] sembra come una soluzione affidabile. Ad esempio, se currentRange è vuoto, restituirà 1 cella comunque (stessa).

  2. Come si estende in modo efficace la selezione dalla cella corrente all'ultima cella di Riga? CreateRange(currentRange, get_range(currentRange.Row + sheet.Columns.Count.ToString()))? Forse c'è una soluzione migliore.

  3. Come ottenere un insieme di celle in questo intervallo che non è vuoto? .SpecialCells(xlCellTypeConstants | xlCellTypeFormulas) non funzionerà, ad esempio, se non viene trovato, .SpecialCells(xlCellTypeConstants) genererà un'eccezione: nessuna cella trovata.

risposta

1

Sono nuovo di VBE, ma credo che una soluzione potrebbe essere quella di

  1. bersaglio un intervallo in cui ci si aspetta non-spazi vuoti
  2. iterare attraverso di loro
  3. controllo se ISBLANK
  4. memorizzare la colonna di quelli che sono falsi in una matrice nel modulo RC[#]
  5. quindi selezionare solo quelli da Range("Array(1),Array(2),...").Select.

Ci scusiamo per lo pseudocodice ... e con due mesi di ritardo. =/

+0

Felice di avere il tuo input, e non è mai troppo tardi per imparare qualcosa di nuovo. ;) Per quanto riguarda la tua risposta, è esattamente quello che voglio evitare: iterazione e ciclo. Farebbe male alle prestazioni, immaginando una riga o una colonna in Excel che contiene già 1 milione di celle; quindi moltiplicare quello per più righe/colonne se voglio controllare più. Questa è la ragione per cui il trattamento integrato come .Specialcells suppongo, offre prestazioni migliori in base alla mia esperienza. – Kenny

Problemi correlati