Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro selezione range variabile

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

macro selezione range variabile

Postdi ilfuocoblu » 16/10/16 18:33

salve amici! ho bisogno ancora della vostra competenza.

una query mi popola un foglio, ma i dati non vengono ordinati sempre nello stesso modo. quindi mi serve di selezionare un range senza però sapere da quale cella iniziare e quale finire. l'unica certezza che ho è quella che il mio range si trova sempre compreso tra i numeri 3 e 4 nella colonna C. in più mi serve che il range parta dalla prima colonna a destra per un numero di colonne pari ad un valore che ho in cella A1.

in pratica chiedo alla macro:
cerca nella colonna C il primo "3" che trovi, scendi nella cella successiva, spostati a destra, seleziona fino alla cella che precede il "4" e allarga questa selezione per un numero di colonne pari al valore in "A1".

spero che si capisca ciò che ho scritto :-?
grazie per l' aiuto.
ilfuocoblu
Utente Junior
 
Post: 15
Iscritto il: 03/02/15 20:36

Sponsor
 

Re: macro selezione range variabile

Postdi alfrimpa » 16/10/16 20:43

Ciao ilfuocoblu

Allega un file di esempio con i dati e mostra il risultato che vuoi ottenere inserito manualmente.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 842
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: macro selezione range variabile

Postdi ilfuocoblu » 16/10/16 21:21

ciao Alfrimpa, grazie per l'intervento.

Immagine

il "3" e il "4" si trovano sempre nella colonna C. però io non so mai da quale riga inizia il "3", in questo caso inizia dalla riga 8 ma può iniziare dalla 15 o da qualunque altra riga.
ora, a me interessa selezionare il range che parte dalla cella sotto e a destra del "3" (D9 in questo caso), che sia della lunghezza fino alla cella che precede il "4" (D13 in questo caso, ma potrebbe essere più lunga o più breve) e in larghezza deve essere il valore che decido io in A1, in questo caso sarebbe stato 4 (col. D-E-F-G).
ilfuocoblu
Utente Junior
 
Post: 15
Iscritto il: 03/02/15 20:36

Re: macro selezione range variabile

Postdi alfrimpa » 16/10/16 22:22

Ma in colonna C il 3 e il 4 sono unici?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 842
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: macro selezione range variabile

Postdi Anthony47 » 17/10/16 02:28

Se e' una "query" allora si puo' sapere esattamente quale area dati la query restituisce, senza stare a inventare metodi approssimativi.
Ad esempio, conoscendo una cella appartenente all'area della query puoi ottenere l'indirizzo dell'area totale con
Codice: Seleziona tutto
QAdr = Range("c14").QueryTable.ResultRange.Address

ResultRange restituisce un "Range"; ovviamente invece di .Address puoi usare altre proprieta' /metodi del Range, esempio .Copy, oppure .Range (per selezionare un'area ridotta).

Quanto detto ti consente una soluzione diversa al problema?

Volendo rimanere sull'impostazione che hai dato, nell'ipotesi che il 3 3 il 4 siano unici:
Codice: Seleziona tutto
my3 = Evaluate("=max((c1:c1000=3)*row(A1:A1000))")
my4 = Evaluate("=max((c1:c1000=4)*row(A1:A1000))")
If my3 * my4 > 0 Then
    Cells(my3 + 1, "D").Resize(my4 - my3 - 1, Range("A1").Value).Select
Else
    'cosa fare se non trova il 3 o il 4?
End If

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro selezione range variabile

Postdi ilfuocoblu » 17/10/16 08:38

Anthony47 ha scritto:
Volendo rimanere sull'impostazione che hai dato, nell'ipotesi che il 3 3 il 4 siano unici:
Codice: Seleziona tutto
my3 = Evaluate("=max((c1:c1000=3)*row(A1:A1000))")
my4 = Evaluate("=max((c1:c1000=4)*row(A1:A1000))")
If my3 * my4 > 0 Then
    Cells(my3 + 1, "D").Resize(my4 - my3 - 1, Range("A1").Value).Select
Else
    'cosa fare se non trova il 3 o il 4?
End If

Ciao


splendido, funziona perfettamente.
grazie ad entrambi per la disponibilità!
ilfuocoblu
Utente Junior
 
Post: 15
Iscritto il: 03/02/15 20:36


Torna a Applicazioni Office Windows


Topic correlati a "macro selezione range variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti