Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007]- Colorare celle con condizione/Range variabile Opzioni
aetio
Inviato: Thursday, October 11, 2012 3:48:42 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
devo risolvere questo problema, ma purtroppo mi incarto quasi subito a causa della mia limitatissima conoscenza del VBA (del quale peraltro sono innamorato alla follia…). In un file di Excel 2007:
-in foglio1 ho dei codici scritti nel Range A5:A12, codici che vengono aggiornati in base alla loro presenza in magazzino;
-in foglio2 ho dei codici scritti nel Range A7:CX [variabile in altezza, con un’istruzione di selezione del tipo
Range("A7", Range("C" & Rows.Count).End(xlUp)).Select].
Obiettivo: quando nel RangeA5:A12 di foglio1 vi sono dei codici compresi nel Range di tipo variabile di foglio2 le rispettive celle, in entrambi i fogli, si colorano di rosso.
Esempio:
in foglio1 nelle celle A5:A12 vi sono i codici 1 2 3 4 5 6 7 8
in foglio 2 nel Range (di tipo variabile nel numero di righe, nel ns. esempio 5) A7:C11 vi sono i codici
9 12 14
15 3 27
4 1 11
6 16 8
19 22 41
le celle contenenti i codici 3 4 1 6 8 si colorano di rosso, in entrambi i fogli.
Grazie infinite, buon pomeriggio
eZio.
Sponsor
Inviato: Thursday, October 11, 2012 3:48:42 PM

 
a10n11
Inviato: Thursday, October 11, 2012 7:00:28 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
prova con questa:

Sub compare()
With Sheets("Foglio2")
Set rng2 = .Range("A7", .Range("C" & Rows.Count).End(xlUp))
End With
With Sheets("Foglio1")
Set rng = .Range("A5:A12")
End With
For Each cl In rng
For Each cl2 In rng2
If cl.Value = cl2.Value Then
cl.Interior.ColorIndex = 3
cl2.Interior.ColorIndex = 3
End If
Next cl2
Next cl
Set rng = Nothing
Set rng2 = Nothing
End Sub

saluti
Giap

aetio
Inviato: Thursday, October 11, 2012 8:39:11 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
la macro è perfetta (...c'era forse qualche dubbio?? :-)) ) e come sempre in due righe di stupende istruzioni fà tutto quanto!!

purtroppo sto riscontrando molte tabelle in cui nel foglio2, nel range variabile, non tutte le celle (e le righe) sono scritte...
Per darti un esempio: supponiamo Range A7:C16, vi sono i codici
9 (vuota) 14
15, 3, (vuota)
(vuote)
6, 16, 8
(vuota), 22, 41
(vuote)
(vuote)
4, 7, 5
(vuote)
8, 5, 1
la macro chiaramente restituisce solo fino alla 2^Riga, perché la 3^ riga è completamente vuota
bisognerebbe invece che in foglio1 le celle colorate di Range A5:A12 contenessero i codici
3, 6, 8, 4, 7, 5, 1.
Detta in volgare, ci correbbe un'istruzione che lavorasse sull'ultima riga in cui ci fosse almeno una cella scritta, ma contemplando la possibilità di incontrare anche più righe vuote...Insomma, un bel Rebus!!
Grazie infinite, buona serata
eZio

aetio
Inviato: Thursday, October 11, 2012 8:49:07 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
EDIT. Un'idea alla "Ulisse-Nessuno" potrebbe essere quella di ingannare il VBA sovradimensionando il Range (una colonna in più), scrivendo nella colonna in più un codice inesistente che la macro legge comunque, ma che ovviamente non restituisce... l'istruzione della macro incontra la riga che è comunque scritta, la oltrepassa e processa la rimanenza del Range... sono a disposizione per sculacciate solenni, se ho scritto un'asinata, ma l'ho provata e funziona a meraviglia... ;-))
Per cui anche questa volta mi hai risolto un bel problema!! (...e la macro è come sempre bellissima)
Grazie assai, buona serata,
eZio
a10n11
Inviato: Friday, October 12, 2012 10:36:59 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
nel foglio2 esiste solo la tabella che occupa le tre colonne??
se così fosse, basta usare l'istruzione Usedrange per determinare l'ultima riga.
saluti
Giap

aetio
Inviato: Friday, October 12, 2012 8:45:27 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
a10n11 ha scritto:
salve
nel foglio2 esiste solo la tabella che occupa le tre colonne??
se così fosse, basta usare l'istruzione Usedrange per determinare l'ultima riga.
saluti
Giap

Ciao,
scusa il ritardo nel risponderti, ma oggi ero in "trasferta"...
Purtroppo le tabelle di foglio2 NON hanno un numero fisso di colonne, per cui temo che la cosa si complichi non poco...
provando con la colonna fittizia la macro lavora perfettamente, ma ho il sospetto che sia un escamotage da "cioccolataio" :-))
Grazie assai, buona serata
eZio
a10n11
Inviato: Saturday, October 13, 2012 9:28:08 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
aetio ha scritto:


provando con la colonna fittizia la macro lavora perfettamente, ma ho il sospetto che sia un escamotage da "cioccolataio" :-))
Grazie assai, buona serata
eZio


Salve
non hai risposto alla mia domanda. Il foglio2 contiene solo la tabella da elaborare?
saluti
Giap

aetio
Inviato: Saturday, October 13, 2012 8:03:34 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
a10n11 ha scritto:

Salve
non hai risposto alla mia domanda. Il foglio2 contiene solo la tabella da elaborare?
saluti
Giap

Ciao,
Scusa..... Vero!!
Negativo, nelle prime 10 righe ci sono anche dei pulsanti e dei commenti. Ma la tabella è unica, anche se varia in estensione e lunghezza a seconda delle tabelle a cui si riferisce.
Grazie assai, buona serata
eZio
a10n11
Inviato: Sunday, October 14, 2012 10:19:05 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
prova con questa:

Sub compare()
With Sheets("Foglio2")
righe = .UsedRange.Rows.Count + 6
colonne = .UsedRange.Columns.Count
Set rng2 = Range(.Cells(7, 1), .Cells(righe, colonne))
End With
With Sheets("Foglio1")
Set rng = .Range("A5:A12")
End With
For Each cl In rng
For Each cl2 In rng2
If cl.Value = cl2.Value Then
cl.Interior.ColorIndex = 3
cl2.Interior.ColorIndex = 3
End If
Next cl2
Next cl
Set rng = Nothing
Set rng2 = Nothing
End Sub


saluti
Giap

aetio
Inviato: Sunday, October 14, 2012 11:07:10 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
dire che resto letteralmente allibito equivale a sminuire di parecchio la mia reazione...!!
Funziona a meraviglia, ma la cosa che mi lascia senza parole è che il tutto avviene grazie a solo 18 righe di istruzioni precise, stringate ed essenziali.
Non so proprio come ringraziarti, e mi scuso ancora per non avre risposto sopra alla tua domanda, ma ero di gran fretta... hai presente quel film inizio '80 con Lino Banfi in cui all'inizio doveva "SOLO accendere e spegnere due spie luminose"?? ecco, forse ho reso l'idea ahahah
Grazie assai, e buona giornata
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.