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

[Excel 2007] Colorare area del foglio in base a dati di celle selezionate Opzioni
aetio
Inviato: Thursday, May 26, 2011 8:22:26 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Vorrei, se possibile, mediante una macro rendere automatica un'operazione che attualmente viene fatta manualmente (con conseguenti: "che barba, che noia", ma sopra tutto con possibilità di errori e sicuramente con grande perdita di tempo). Prima di descrivere il problema posto un'immagine che aiuta molto a capire velocemente ciò che vorrei fare:



Dati:
- tabella 1 reale parte da riga18, da col.B a col.G
- le celle selezionate da cui prelevare i dati sono in una colonna del foglio residente in altra area (variabile)

Esempio:
SE
le celle selezionate, sempre in una sola colonna e in righe adiacenti (già chiamata "catasta"), contengono i seguenti dati (variabili di volta in volta, ma strutturati allo stesso modo: numero, apice, numero)
73'52
73'37
72'21
69'108
61'49
etc.

VORREI
che la macro cercasse in tabella 1, col.B i dati delle celle selezionate e partendo dalle rispettive righe in cui si trovano colorasse le celle da col.C a col.G della riga più le rispettive delle dieci righe precedenti. Nel ns. caso, nell'immagine:
trova 73'52 e colora C12:G2
trova 73'37 e colora C27:G17
etc.
fino all'ultimo dato dell'area (colonna) selezionata
Se la cosa aiutasse a facilitare il compito, l'area da selezionare (contenente i dati) potrebbe essere col.B, da riga 7 fino al massimo di riga 15.
Spero che sia una cosa fattibile.... ;))
Grazie assai e buona giornata
eZio



Sponsor
Inviato: Thursday, May 26, 2011 8:22:26 AM

 
a10n11
Inviato: Thursday, May 26, 2011 9:45:02 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
non ho capito molto del problema.
Devi selezionare una cella in un foglio esterno, confrontarlo con il valore della Tabella 1 e colorare 10 celle a ritroso. Non si caspisce se la selezione e singola o multipla.
PS. non era già stato fatto qualcosa di simile?
saluti
Giap

aetio
Inviato: Thursday, May 26, 2011 10:29:55 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
no... la cella, o meglio le celle in colonna (stessa colonna) sono nello stesso foglio. E' selezione unica (per intenderci: senza l'uso di Ctrl), le celle sono adiacenti nella stessa colonna es. B7:B12
Negativo: ho cercato se era già stato fatto qualcosa del genere, ma non ho trovato nulla. C'era una macro per la ricerca di un valore nella tabella (previa InputBox) da evidenziare colorando la cella... ma non c'è nulla relativo a una ricerca così complessa, in fondo dall'esito diverso.... Qui selezioni l'area dei dati, lanci la macro che: 1) cerca in col.B della tabella 1 quei dati, 2) seleziona l'area da col.C a col.G della stessa riga dei dati trovati fino alle celle di col.C:G di 10 righe sopra a quella dei dati trovati, 3) colora l'area che ha appena selezionato...
Grazie assai e buona giornata
eZio
a10n11
Inviato: Thursday, May 26, 2011 11:11:01 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
comincia da qui e vedi se ha almeno sfiorato il problema.


Sub seleziona10()
Set area = Range("B2", Range("B2").End(xlDown))
Set selez = Selection
For Each Cl In selez
For Each Itm In area
If Itm.Value = Cl.Value Then
riga = Itm.Row
Soglia = riga - 9
If riga - 9 < 2 Then
Soglia = 2
End If
For N = riga To Soglia Step -1
Cells(N, 2).Offset(0, 1).Resize(1, 5).Interior.ColorIndex = 6
Next
Exit For
End If
Next
Next
set area=nothing
set selez=nothing
End Sub

saluti
Giap

aetio
Inviato: Thursday, May 26, 2011 1:21:23 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
premesso che ho modificato l'istruzione
Set area = Range("B2", Range("B2").End(xlDown))
in
Set area = Range("B4", Range("B4").End(xlDown))
per una comodità di impostazione delle mie tabelle

la macro lavora colorando l'area adiacente a quel range, che nella prova che ho fatto è B4:B11, da C11 a G2...
invece dovrebbe:
1) cercare nella tabella 1, col.B, ciascuno dei valori scritti nella selezione (che nella tabella 1 non sono uno di seguito all'altro, come nella selezione)
2) per ognuno di essi partendo dalla propria riga di competenza, da col.C a col.G, dovrebbe colorare salendo fino a 10 righe sopra alla riga ... dovrebbe cioè fare come nell' es. che ho illustrato sopra...
Un altro es.

selezione unica
cella B4 68'121
cella B5 64'32
cella B6 61'51

Macro
In tabella 1
trova 68'121 in B121 ---> colora C121:G111
trova 64'32 in B198 ---> colora C198:G188
trova 61'51 in B362 ---> colora C362:G352

La macro cioè dovrebbe scansionare la col.B da riga 18 fino a fine tabella1 e dove trova i codici che sono scritti nell'area selezionata colora l'area di competenza come sopra descritto...

Grazie assai (come sempre sei un Tesoro), e buon pomeriggio
eZio
a10n11
Inviato: Thursday, May 26, 2011 5:34:14 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
la macro esegue questa procedura date un numero x di celle selezionate:

Cerca per ogni selezione una corrispondenza nella tabella 1 in colonna B
se la trova applica un colore di sfondo alle celle di colonne C:G a partire dalla riga trovata fino a 9 righe precedenti ad essa.

Mi pare che esegua quanto da te indicato nell'ultimo post, non riesco a vedere differenze tra quanto dici e quanto esegue la macro. come vedi nell'immagine,



selezionata la cella AJ7, nella colonna B, trova corrispondenza in tabella 1 in cella B20 colorando le celle da
C11:G20

saluti
Giap



aetio
Inviato: Thursday, May 26, 2011 5:57:59 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
come al solito era la megacippagalattica a "cannare"... se la mia tabella 1 inizia da riga 18 devo "adattare" a riga 18 l'istruzione
Set area = Range("B2", Range("B2").End(xlDown))
E altrettanto come al soltito con quattro splendide righe di istruzioni mi hai dato una mano pazzesca...
Le tue creature sono di un'eleganza davvero ineguagliabile!!
Grazie di tutto e buona serata,
eZio
a10n11
Inviato: Thursday, May 26, 2011 6:05:44 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
bene. stavolta ci abbiamo preso al primo colpo.
Eppure..... ho mente di aver già soddisfatto una richiesta simile a questa, forse un altro con problematica simile.
saluti
Giap

aetio
Inviato: Thursday, May 26, 2011 7:03:10 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
forse ti riferivi a questa:

Sub confronta1()
Dim cl As Variant, cl2 As Variant
riga = ActiveCell.Row
If riga <= 10 Then
MsgBox ("Numero Riga selezionata errata")
Exit Sub
End If
n = 1
Set area = Range(Cells(riga, 8), Cells(riga, 19))
Set area2 = Range(Cells(riga - 10, 3), Cells(riga - 1, 7))
For Each cl In area
RRiga = riga - 10
For Each cl2 In area2
Select Case RRiga
Case riga - 10
colore = 39
Case riga - 11
colore = 40
Case riga - 12
colore = 41
Case riga - 13
colore = 42
Case riga - 14
colore = 43
Case riga - 15
colore = 44
Case riga - 16
colore = 37
Case riga - 17
colore = 46
Case riga - 18
colore = 47
Case riga - 19
colore = 48
End Select
If cl.Value = cl2.Value Then
cl.Interior.ColorIndex = colore
cl2.Interior.ColorIndex = 3
End If
If n = 5 Then
RRiga = RRiga - 1
n = 1
Else
n = n + 1
End If
Next cl2
Next cl
Set area = Nothing
Set area2 = Nothing
ActiveCell.Offset(-1, 0).Range("A1").Select
End Sub


La macro confronta i dati di tabella 2, range su una singola riga (la riga della cella selezionata in col.B), con i dati di tabella 1, col.C:G sulla stessa riga più le 10 righe precedenti e ne evidenzia, sia in tabella 1 che in tabella 2, i codici presenti in entrambe le tabelle. In tabella 1 usa il colore Rosso, mentre in tabella 2 usa diversi colori a seconda della riga in cui si trovano in tabella 1.
Insomma: un autentico capolavoro!! Più guardo le tue creature, più le ammiro... e più le adoro!!! Geniali....
Grazie infinite e buona serata
eZio
aetio
Inviato: Friday, May 27, 2011 9:30:38 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
[spostato QUI ]
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.