Come unire più oggetti Intervallo, in uno, da utilizzare come origine del Grafico

Sto cercando di fare un grafico, con più colonne come area di origine.
Fondamentalmente, io voglio selezionare le colonne specifiche, in cui ho saltato alcune colonne, e unire il tutto in un intervallo. Ho impostato un ciclo, in cui ho creato una gamma, e aggiungere è l’indirizzo di una stringa, e separa con una virgola. Sono abbastanza sicuro che questo è il modo in cui Excel vuole formattato.

MA, mi sembra di non riuscire a creare una nuova gamma di stringa.

Spero che qualcuno qui mi può aiutare.

Molto vorrei evitare di dover copiare le colonne di un foglio nuovo, e basta segnare tutto come un intervallo.

Ho il seguente codice, per rendere l’offerta congiunta:

'Loops for each number of sections
For Z = 1 To Sheet1.txtNoSections

    'Get gauge to use
    Section = Workbooks(ThisWorkbook.Name).Worksheets(1).Cells(26 + Z, 6).Value
    'Sets varibel for distance from root
    Dist = Workbooks(ThisWorkbook.Name).Worksheets(1).Cells(26 + Z, 3).Value
    'Get range to use
    Set ChartRange = ActiveSheet.Range(ActiveCell, ActiveCell.Offset(rc, Section))
    RangeString = RangeString & ChartRange.AddressLocal
    If Z <> 1 Then
        RangeString = RangeString & ","
    End If

Next Z

Ho quindi cercato di ottenere una nuova gamma con qualcosa di simile a questo, ma senza fortuna.

Dim ActualRange As Range
Set ActualRange = ActiveSheet.Range(RangeString)

Quando si stampa il RangeString, assomiglia a questo:
$S$2$V$6181$S$2:$X$6181,$S$2:$Z$6181,$S$2:$AB$6181,$S$2:$AD$6181,$S$2:$AF$6181,$S$2:$AH$6181,$S$2:$AJ$6181,$S$2:$AL$6181,$S$2:$AN$6181,$S$2:$AP$6181,$S$2:$AR$6181,$S$2:$AT$6181,$S$2:$AV$6181,$S$2:$AX$6181,$S$2:$AZ$6181,$S$2:$BB$6181,$S$2:$BD$6181,$S$2:$BF$6181,$S$2:$BH$6181,$S$2:$BJ$6181,$S$2:$BL$6181,$S$2:$BN$6181,$S$2:$BP$6181

Sembra la stessa unione.

Sarebbe porbbably meglio usare Unione europea metodo di concatenazione di gamma (che non funzionano se il gamma termina con una virgola ,)
Puoi postare quello che RangeString sembra che dopo si esegue il codice? Si può mettere un Debug.Print RangeString dopo Next Z e controllare il valore. edit: un Buon punto di Jmax 🙂
Naturalmente la mia stringa terminata da un punto e virgola. Ho cambiato, ma ancora non riesce quando si tenta di impostare l’intervallo.
Credo che questo è quello che stai cercando? RangeString dovrebbe assomigliare a questa "S2:S6181,V2:V6181,X2:X6181,Z2:Z14,AB1:AB6181,........,BP2:BP6181"
Il RangeString manca una prima virgola per delimitare il primo Intervallo. veramente dovrebbe utilizzare le funzioni standard come Unione

OriginaleL’autore Nicolai | 2012-03-28

2 Replies
  1. 7

    Come discusso nei commenti di cui sopra, il modo migliore per gestire questa situazione è quello di utilizzare nativo funzioni VBA come Union.

    È possibile trovare diversi riferimenti su come utilizzare questo:

    Di sicurezza, si prega di notare che è in grado di rispondere propria domanda (è anche altamente raccomandato) e accettarlo. In questo modo, è possibile condividere le tue conoscenze con la comunità e il modo in cui hai risolto il tuo problema con il proprio codice.

    IMHO, questo sarebbe anche meglio che accettare la mia risposta.

    Io ho risposto con il codice che ho finito con. Io davvero non si desidera contrassegnare la mia risposta, quando hai risolto il mio problema :).
    +1 su Union 🙂

    OriginaleL’autore JMax

  2. 2

    Seguenti JMax guida, ho finito per usare Unione.
    Questo è il codice che ho finito con.
    La prima volta attraverso il ciclo, ho impostato il CombinedRange al mio attuale gamma, e le successive esecuzioni, ho unione.

    For Z = 1 To Sheet1.txtNoSections
    
        'Get gauge to use
        Section = Workbooks(ThisWorkbook.Name).Worksheets(1).Cells(26 + Z, 6).Value
        'Get range to use
        Set ChartRange = ActiveSheet.Range(ActiveCell, ActiveCell.Offset(rc, 0))
        Debug.Print "ChartRange(" & Z & "): " & ChartRange.Address
        If Z = 1 Then
            Set CombinedRange = ChartRange
        Else
            Set CombinedRange = Union(CombinedRange, ChartRange)
        End If
        ActiveCell.Offset(0, 5).Activate
    
    Next Z
    Debug.Print "Combined: " & CombinedRange.Address
    +1 per l’invio della vostra soluzione 🙂

    OriginaleL’autore Nicolai

Lascia un commento