| | Post: 51 | Registrato il: 09/04/2015
| Età: 45 | Utente Junior | 2013 | | OFFLINE | |
|
20/09/2016 17:21 | |
Ciao,
mi spiego meglio: eseguito un codice ottengo alla fine una stringa composta come segue A-B-C-D (può essere una qualsiasi combinazione delle 4 variabili)
vorrei ottenere: A(rosso)-B(blu)-C(giallo)-D(verde) ossia la stringa con ciascuna parola scritta con un colore diverso
ho provato con il seguente codice ma da errore 448:
If Cells(X, 1) = "A-B-C-D" Then
Cells(X, 1).Characters(Start:=1, LENGHT:=3).Font.ColorIndex = 42
Cells(X, 1).Characters(Start:=5, LENGHT:=4).Font.ColorIndex = 10
End If
X è il n° riga che è variabile
Cosa mi consigliate di fare?
Grazie mille
|
|
| | Post: 2.466 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
20/09/2016 18:12 | |
Buona sera, Shadi;
se fossi sicuro che il Record avesse la stessa struttura:
- 1Carattere-1Carattere-1Carattere-1Carattere
la soluzione sarebbe piuttosto semplice:
Sub Macro_pg()
ActiveCell.Select
With ActiveCell.Characters(Start:=1, Length:=1).Font
.Color = -16776961
End With
With ActiveCell.Characters(Start:=3, Length:=1).Font
.Color = -4165632
End With
With ActiveCell.Characters(Start:=5, Length:=1).Font
.Color = -11480942
End With
With ActiveCell.Characters(Start:=7, Length:=1).Font
.Color = -16711681
End With
End Sub
ma, per esperienza, ritengo che poi mi diresti che la struttura potrebbe essere;
- "n"Caratteri-"n"Caratteri-"n"Caratteri-"n"Caratteri
O mi sbaglio?
In questo caso la storia si complica.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 51 | Registrato il: 09/04/2015
| Età: 45 | Utente Junior | 2013 | | OFFLINE | |
|
20/09/2016 18:16 | |
n caratteri no
però sono così
A=3
B=3
C=2
D=4 |
| | Post: 52 | Registrato il: 09/04/2015
| Età: 45 | Utente Junior | 2013 | | OFFLINE | |
|
20/09/2016 18:28 | |
l'ho provato e funziona, però così le parole cambiano di volta in volta i colori.
A(rosso)-B(blu)-C(giallo)-D(verde)
se la combinazione diventasse:
A-C sarebbe A(rosso)-C(blu) o
B-D sarebbe B(rosso)-D(blu)
invece io vorrei associare un colore fisso ad ogni parola, in base a qualsiasi combinazione esca, le parole dovrebbero sempre avere lo stesso colore.
Non so se mi sono spiegato bene
grazie |
| | Post: 2.467 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
20/09/2016 18:29 | |
In tal caso, il Codice VBA proposto, dovrebbe funzionare. Considera solo che i quattro colori proposti sono rispettivamente: - Rosso - Blu - Verde - Giallo colori che potrai variare tranquillamente a Tuo piacere; devi solo adattare il CodiceColore alla Tua scelta. Credo che il Ciclo per tutte le Celle sia abbastanza intuitivo (For Next oppure, se le Celle sono contigue senza Celle vuote, Do While; in questo caso risparmi una Variabile); se lo ritieni utile e necessario, possiamo approfondire. Buona serata. Giuseppe Edit: leggo solo ora la Tua Risposta #4; devo pensare a come risolvere, ma, temo che la questione si complichi. Sarebbe utile un File, senza dati sensibili, con alcune Celle con Valori significativi colorati.[Modificato da GiuseppeMN 20/09/2016 18:35]
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 845 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Senior | 365 | | OFFLINE |
|
20/09/2016 23:22 | |
ciao
questo è quello che cerchi?
oppure devi colorare la parola completa
questa colora il carattere.
Private Sub Worksheet_Change(ByVal Target As Range)
For I = 1 To Len(Target)
ColVar = 1
If Asc(Mid(Target, I, 1)) - 97 < 55 Then ColVar = Asc(Mid(Target, I, 1)) - 66 '<<< lettere a-z
If Asc(Mid(Target, I, 1)) - 65 < 30 Then ColVar = Asc(Mid(Target, I, 1)) - 62 '<<< lettere A-Z
If Asc(Mid(Target, I, 1)) - 48 < 10 Then ColVar = Asc(Mid(Target, I, 1)) - 2 '<<< numeri 0-9
Target.Characters(Start:=I, Length:=1).Font.ColorIndex = ColVar
Next I
End Sub
da gestire le celle che vuoi coinvolgere
questa vale per tutto il foglio [Modificato da federico460 20/09/2016 23:27] |
| | Post: 53 | Registrato il: 09/04/2015
| Età: 45 | Utente Junior | 2013 | | OFFLINE | |
|
21/09/2016 09:33 | |
Grazie Federico460, ma non conosco questa funzione e non riesco a farla girare
Grazie GiuseppeMN, in allegato il file |
| | Post: 718 | Registrato il: 06/04/2013
| Utente Senior | 2010 | | OFFLINE |
|
21/09/2016 10:39 | |
Ciao
Chiedo scusa a Giuseppe (cari saluti) se mi intrometto, ma solo per non fare lavori a vuoto.
Shadi non fornisci corrette informazioni se la colonna da colorare è la C (SHIPPER).
Questo perché ti è stato chiesto:
"...- "n"Caratteri-"n"Caratteri-"n"Caratteri-"n"Caratteri..."
e tu hai risposto: "..n caratteri no..." invece è si.
Inoltre, poiché conosco quel foglio, se aggiungi un altro trasportatore, la colonna potrebbe contenere 5 valori da colorare e se ne aggiungi un altro 6 valori ecc ecc.
Infine non è chiaro se vuoi assegnare gli n colori sulla base della sigla del trasportatore (quindi per ese. tutti i DHL rossi - tutti i TRMC verdi ecc), oppure il 1° (qualsiasi sia) rosso, il 2° (qualsiasi sia) verde ecc.
Io credo che sia il 1° caso, cioè tutti i DHL con lo stesso colore, tutti i TRMC con lo stesso colore ecc..ecc
Precisa meglio
saluti Domenico
Win 10 - Excel 2016 |
| | Post: 2.468 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
21/09/2016 11:28 | |
Buona giornata, Domenico;
leggerti è sempre un grande piacere.
@ dodo47, scrive:
Shadi non fornisci corrette informazioni se la colonna da colorare è la C (SHIPPER).
Questo perché ti è stato chiesto:
"...- "n"Caratteri-"n"Caratteri-"n"Caratteri-"n"Caratteri..."
e tu hai risposto: "..n caratteri no..." invece è si.
Domenico, c'è un'altro problema; ho cercato di analizzare i valori in Colonna "C" e ho notato che non c'è congruenza.
Voglio dire, non è che che una stringa abbia sempre lo stesso colore.
Nell'immagine in allegato ho cercato di concretizzare quanto sopra.
@ shadi1978
A questo punto, per poter gestire questa nuova situazione, è necessario analizzare ogni stringa e valutare se è riferita ad un solo Vettore (DHL, NW, SDB, TRMC).
In questo caso assegnare ad ogni stringa il colore assegnato a quel Vettore.
Se la stringa contiene più Vettori, colorare:
- il I° Vettore di Rosso
- il II° Vettore di Blu
- il III° Vettore di Verde
- il IV° Vettore di Giallo
Questo non credo sia veramente complicato.
Spero di essermi spiegato.
A disposizione
Buona serata.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 54 | Registrato il: 09/04/2015
| Età: 45 | Utente Junior | 2013 | | OFFLINE | |
|
21/09/2016 11:50 | |
Grazie a tutti per le risposte.
Infatti mi sono spiegato male Dodo: ho risposto no alla domanda n-caratteri, perchè intendevo che non sono sempre variabili, ma ogni stringa a n°caratteri predefinito...
Cerco di spiegarmi meglio, allora io vorrei che la stringa risultante sia composta sempre con i seguenti abbinamenti:
-SDB rosso
-DHL blu
-NW verde
-TRMC giallo
nella stringa risultante la posizione dei trasportatori è sempre la stessa,di seguito es.nel caso in cui ci siano tutti e 4 oppure sdb e nw siano assenti:
1° SDB rosso o es. assente
2° DHL blu o es. 1°
3° NW verde o es. assente
4° TRMC giallo o es. 2°
In futuro, come accennava Dodo, probabilmente verranno inseriti 1 o altri 2 trasportatori: xxx rosa, yyy arancione
Grazie mille
|
| | Post: 719 | Registrato il: 06/04/2013
| Utente Senior | 2010 | | OFFLINE |
|
21/09/2016 13:32 | |
@Giuseppe
nella colonna C possono apparire tutti e 4 i trasportatori oppure 1 oppure 2 ecc (separati da "-")
L'ordine in cui appaiono non sempre lo stesso, perché se un trasportatore non viene estratto, non c'è.
Quindi se in effetti l'ordine è:
SDB-DHL-NW-TRMC
è vero che il primo è SDB, ma se non ci fosse:
DHL-NW-TRMC
il primo sarebbe DHL
Pertanto le combinazioni sono molteplici:
SDB
SDB-DHL
SDB-DHL-NW
SDB-DHL-NW-TRMC
DHL
DHL-TRMC
NW
NW-TRMC
ECC ECC
Da quel che ho capito, shadi vuole sempre (se presenti)
-SDB rosso
-DHL blu
-NW verde
-TRMC giallo (il giallo sul bianco si vede male shadi)
(prego shadi di confermare)
saluti e..buon lavoro
Domenico
Win 10 - Excel 2016 |
| | Post: 55 | Registrato il: 09/04/2015
| Età: 45 | Utente Junior | 2013 | | OFFLINE | |
|
21/09/2016 14:17 | |
Esatto Domenico, spiegato molto meglio di me... Grazie
I colori che ho segnato sono arbitrari, nel codice ci sono i colori che verranno utilizzati:
If sh1.Cells(X, 3) = "SDB" Then sh1.Cells(X, 3).Font.ColorIndex = 41
If sh1.Cells(X, 3) = "DHL" Then sh1.Cells(X, 3).Font.ColorIndex = 9
If sh1.Cells(X, 3) = "NW" Then sh1.Cells(X, 3).Font.ColorIndex = 25
If sh1.Cells(X, 3) = "TRMC" Then sh1.Cells(X, 3).Font.ColorIndex = 10
Grazie |
| | Post: 2.469 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
21/09/2016 16:47 | |
Buona sera, Domenico; quello che scrivi mi era abbastanza chiaro, con il prospetto che ho proposto in risposta #9 cercavo di evidenziare le incongruenze. Ad esempio, nelle righe nelle quali "DHL" è riportato singolarmente, viene evidenziato in Rosso Nelle righe nelle quali "DHL" appartiene ad un gruppo di Vettori non segue più questa regola; in Riga 39 la striga non rispetta questa regola. DHl è in seconda posizione ed è evidenziato in BLU. Nel Foglio di lavoro "TOP PRICES", in Riga 39, la stringa SDB-DHL-NW-TRMC viene rappresentata così: - SDB Rosso - DHL Blu - NW Verde - TRMC Giallo mentre mi sarei aspettato: - SDB Azzurro - DHL Rosso - NW Viola - TRMC Verde Considerando che i Vettori vengono rappresentati con stringhe di diversa lunghezza, credo che il Codice VBA debba essere piuttosto strutturato. Quando vai a scomporre le stringhe contenenti più Vettori non sai mai quale e in quale posizione un Vettore potrebbe essere riportato. Se ritieni di poter proporre una Tua Soluzione sarò ben felice di imparare nuove tecniche; io alzo bandiera bianca. Un caro saluto e ... buon Lavoro Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 726 | Registrato il: 06/04/2013
| Utente Senior | 2010 | | OFFLINE |
|
21/09/2016 19:35 | |
@Giuseppe
sei un grande sfaticato....(leggi parac....)!!!!
nel file che ti ha inviato shadi c'è quello che lui attualmente ha, no quello che vuole e che tu hai capito benissimo.
@shadi
Allego file.
Nel modulo1 dove c'è la "tua" macro Sub CONFRONTA() ho inserito all'inizio la variabile Public ElabInt As Boolean, che, nel caso tu non abbia codificato nella macro Sub ColoraStringa(...) il trasportatore ed il relativo colore, blocca l'elaborazione.
Tale sub viene chiamata da quella principale (CONFRONTA) verso la fine, vedi istruzione contrassegnata da '>>>>>>>>>>>>>>>
ColoraStringa sh1.Cells(X, 3), Sg '>>>>>>>>>>>>>>>
che passa alla sub che colora la cella da analizzare ed il valore della stringa (Sg).
Se vuoi renderla autonoma fai tu.
La sub che colora funziona nel seguente modo:
a parte lo split della stringa, carica in un array la posizione dei trattini "-" quindi si conosce quanto sono lunghe le relative sub-stringhe facendo la differenza tra le posizioni (A - Da).
Spero che non sia fiato sprecato!
saluti
[Modificato da dodo47 21/09/2016 19:44] Domenico
Win 10 - Excel 2016 |
| | Post: 56 | Registrato il: 09/04/2015
| Età: 45 | Utente Junior | 2013 | | OFFLINE | |
|
22/09/2016 11:17 | |
|
|
|