Condividi:        

Cerca e formatta

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

Cerca e formatta

Postdi VisitorsVBA » 07/12/06 18:40

Ciao,
sono stanco e non riesco a risolvere questo quesito:
ho bisogno, in tempi brevi, di scrivere un codice che cerca in una determinata colonna ("A") i valori compresi tra due date indicate dentro due celle ("G1" e "G2") e colora di rosso lo sfondo della cella.

Come faccio???? :cry:
VisitorsVBA
Utente Junior
 
Post: 16
Iscritto il: 23/11/06 18:43

Sponsor
 

Postdi VisitorsVBA » 07/12/06 21:59

Ecco come ho pensato di fare:
Funziona perfettamente che ne pensate?

Sub FormattaCompreso()
Range("A2:A10000").Interior.ColorIndex = 0
indi = 2 'riga partenza
COMVAL = 0 'valore iniziale della cella
condi1 = Range("C1") 'condizione 1
condi2 = Range("C2") ' condizione 2
'eseguie il ciclo finchè il valore della cella
'della colonna A non è vuota. Quando la cella
'è vuota esce dal ciclo.
Do Until Range("A" & indi) = ""
'Condizione: se il valore della cella è compresa
'tra il valore della cella C1 e la cella C2
'colora di rosso la cella altrimenti colora di bianco
'e aumenta il valore "indi" di 1 (scalando di cella)
If Range("A" & indi).Value >= condi1 And _
Range("A" & indi).Value <= condi2 Then
'assegna il valore della cella
COMVAL = Range("A" & indi).Value
Range("A" & indi).Interior.ColorIndex = 3
Else
Range("A" & indi).Interior.ColorIndex = 0
End If
indi = indi + 1 ' aumenta di una riga
Loop 'esci dal ciclo
End Sub
:)
VisitorsVBA
Utente Junior
 
Post: 16
Iscritto il: 23/11/06 18:43

Postdi Anthony47 » 08/12/06 03:14

Ciao Visitor,
Non serve la macro, si puo’ fare con la formattazione condizionata.
Hai i limiti di date in C1 (prima data) e C2 (seconda data), e le tue date in col A.
Selezioni A2, poi Menu ->Format ->Formattazione condizionale; nella finestrella che ti compare lasci come Condizione 1 “il valore e’”, poi “tra”; nelle 2 aree accanto segni =$C$1 e =$C$2; premi Formato, scegli il Tab “Motivo”, scegli il colore che vuoi; confermi con Ok, Ok.
Poi copi questa cella e fai Incolla Speciale/Formato su tutta la colonna A.

Voila’.

Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi cassioli » 11/12/06 11:05

VisitorsVBA ha scritto:Ecco come ho pensato di fare:
Funziona perfettamente che ne pensate?

Sub FormattaCompreso()
Range("A2:A10000").Interior.ColorIndex = 0
indi = 2 'riga partenza
COMVAL = 0 'valore iniziale della cella
condi1 = Range("C1") 'condizione 1
condi2 = Range("C2") ' condizione 2
'eseguie il ciclo finchè il valore della cella
'della colonna A non è vuota. Quando la cella
'è vuota esce dal ciclo.
Do Until Range("A" & indi) = ""
'Condizione: se il valore della cella è compresa
'tra il valore della cella C1 e la cella C2
'colora di rosso la cella altrimenti colora di bianco
'e aumenta il valore "indi" di 1 (scalando di cella)
If Range("A" & indi).Value >= condi1 And _
Range("A" & indi).Value <= condi2 Then
'assegna il valore della cella
COMVAL = Range("A" & indi).Value
Range("A" & indi).Interior.ColorIndex = 3
Else
Range("A" & indi).Interior.ColorIndex = 0
End If
indi = indi + 1 ' aumenta di una riga
Loop 'esci dal ciclo
End Sub
:)

usa le tag (code)(/code) quando scrivi codice, è piu' leggibile. ;) (e ti mantiene pure i tab).
Codice: Seleziona tutto
Sub FormattaCompreso()
  Range("A2:A10000").Interior.ColorIndex = 0
  indi = 2 'riga partenza
  COMVAL = 0 'valore iniziale della cella
  condi1 = Range("C1") 'condizione 1
  condi2 = Range("C2") ' condizione 2
'eseguie il ciclo finchè il valore della cella
'della colonna A non è vuota. Quando la cella
'è vuota esce dal ciclo.
  Do Until Range("A" & indi) = ""
'Condizione: se il valore della cella è compresa
'tra il valore della cella C1 e la cella C2
'colora di rosso la cella altrimenti colora di bianco
'e aumenta il valore "indi" di 1 (scalando di cella)
    If Range("A" & indi).Value >= condi1 And _
      Range("A" & indi).Value <= condi2 Then
'assegna il valore della cella
      COMVAL = Range("A" & indi).Value
      Range("A" & indi).Interior.ColorIndex = 3
    Else
      Range("A" & indi).Interior.ColorIndex = 0
    End If
    indi = indi + 1 ' aumenta di una riga
Loop 'esci dal ciclo
End Sub
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi cassioli » 11/12/06 11:09

VisitorsVBA ha scritto:Si lo so ma a me serve che colori tutta la riga dell'intervallo. In questo modo. Che ne dite?

Sub FormattaCompreso()

Range("A2:E10000").Interior.ColorIndex = 0

indi = 2 'riga partenza
ComVal = 0 'valore iniziale della cella
CONDI1 = Range("J1") 'condizione 1
CONDI2 = Range("J2") ' condizione 2

'eseguie il ciclo finchè il valore della cella
'della colonna A non è vuota. Quando la cella
'è vuota esce dal ciclo.
Do Until Range("D" & indi) = ""

'Condizione: se il valore della cella è compresa
'tra il valore della cella C1 e la cella C2
'colora di rosso la cella altrimenti colora di bianco
'e aumenta il valore "indi" di 1 (scalando di cella)
If Range("D" & indi).Value >= CONDI1 And _
Range("D" & indi).Value <= CONDI2 Then

'assegna il valore della cella
ComVal = Range("D" & indi).Value

Range("A" & indi & ":" & "E" & indi).Interior.ColorIndex = 8
Else
Range("A" & indi & ":" & "E" & indi).Interior.ColorIndex = 0
End If

indi = indi + 1 ' aumenta di una riga

Loop 'esci dal ciclo
End Sub


Anthony47 ha scritto:Penso che sia la continuazione di questa richiesta:
VisitorsVBA ha scritto:ho bisogno [....... ] di scrivere un codice che cerca in una determinata colonna ("A") i valori compresi tra due date indicate dentro due celle ("G1" e "G2") e colora di rosso lo sfondo della cella.

(vedi http://www.pc-facile.com/forum/viewtopic.php?t=54709)

Anche cambiando la richiesta, la mia proposta e’: facciamolo con la formattazione condizionata.

Rispetto alla risposta precedente, selezioni la cella D2, attivi la formattazione condizionata; selezioni “La formula è” e inserisci la formula =E($D2>=$C$1;$D2<=$C$2)

Poi copi questa cella e fai Incolla Speciale/Formato su tutte le colonne che vuoi evidenziare, al limite su tutto il foglio se vuoi colorare come dici tutta la riga.

Se proprio vuoi usare una macro, ti suggerirei di identificare l’ ultima riga utilizzata con l’ istruzione
Codice:
LastRow = Range("D65536").End(xlUp).Row
E poi, invece del Do Until fare un ciclo For/Next con
Codice:
For indi = 2 to LastRow

con le tue istruzioni di verifica e formattazione.

Ciao,
_________________
Anthony47
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02


Torna a Applicazioni Office Windows


Topic correlati a "Cerca e formatta":


Chi c’è in linea

Visitano il forum: Nessuno e 115 ospiti