2012-02-23 18 views

risposta

35

Anche se è davvero sconsigliato usare le celle di fusione in Excel (utilizzare Center Across Selection per esempio se necessario), la cella che "contiene" il valore è quella sul in alto a sinistra (almeno, è un modo per esprimerla).

Quindi, è possibile ottenere il valore di celle unite nella gamma B4:B11 in diversi modi:

  • Range("B4").Value
  • Range("B4:B11").Cells(1).Value
  • Range("B4:B11").Cells(1,1).Value

Si può anche notare che tutti gli altri le cellule non hanno alcun valore in esse. Durante il debug, è possibile vedere che il valore è empty.

Si noti inoltre che Range("B4:B11").Value non funzionerà (genera un errore di esecuzione numero 13 se si tenta di Debug.Print perché restituisce un array.

+46

Quando non conosco i limiti dell'area unita, ottengo il valore con 'Range (" B6 "). MergeArea.Cells (1,1) .Value' –

+0

Consiglio! JMax

+0

@Josh Brown: soluzione incredibile .. grazie –

19

Josh Brown ha dato (in un commento) quello che penso è la migliore risposta:

Quando io non conosco i limiti dell'area risultante dalla fusione, ottengo il valore con

Range("B6").MergeArea.Cells(1,1).Value 

Questo è utile in VBA quando, ad esempio, si stanno eseguendo il looping di file che potrebbero avere celle unite di intervalli sconosciuti, quindi si può essere molto più generali con questo metodo. Grazie Josh!

0

questo può essere fatto in 2 fasi:

Nome la gamma delle celle unite; evidenzia la cella unita quindi vai sulla barra multifunzione: Formulas Tab --> Define Name;

Accertati che non vi siano spazi nel nome. Esempio: defined_Name. Vai alla cella desiderata che desideri vedere l'output/risultato. In quella cella, digitare: =defined_Name.

Premere Invio perché è stato fatto.

Problemi correlati