Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Formattazione condizionale celle sulla base di testo

Ultimo Aggiornamento: 26/10/2021 18:01
Post: 1
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
25/10/2021 12:38

Buongiorno a tutti,
mi trovo davanti ad un problema forse banale ma che non riesco a risolvere da solo.
In pratica h la necessità di colorare delle celle sulla base del testo contenuto in altre celle; provo a fare un esempio pratico:
voglio che la cella A1 si colori come segue:

- blu se contiene una parola presente nelle celle b1:b10
- giallo se contiene una parola presente nelle celle C1:C10
- rosso se contiene una parola presente nelle celle d1:d10

e così via....

Inoltre ho bisogno che la corrispondenza tra le celle sia parziale, ovvero se la parola che fa cambiare colore fosse LATTE, deve far cambiare colore alle celle contenenti LATTE INTERO, LATTE SCREMATO o PANINO AL LATTE.

Fino ad ora non sono riuscito a trovare una regola, o formula da inserire nella formattazione condizionale che permetta di soddisfare tutte le condizioni.

Mi affido a voi.

Buona Giornata.
Simone.
Post: 3.233
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
25/10/2021 13:36

ciao
ti faccio un esempio solo per la col. B

nella FC:

=CONTA.SE($B$1:$B$10;"*"&$A$1&"*")>0 e dai colore blu

saluti

edit: l'unico problema è se trova "latte" in più colonne....verrà applicata l'ultima FC


[Modificato da dodo47 25/10/2021 13:41]
Domenico
Win 10 - Excel 2016
Post: 1
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
25/10/2021 14:03

Ciao,
innanzitutto ti ringrazio per la risposta celerissima.
Ho provato la formula che mi hai dato adattandola alle celle reali, ma in pratica mi colora tutta la selezione cui applico la FC, come da screen di seguito:


Sicuramente sbaglio qualcosa, o magari ho spiegato male prima.
Comunque sia l'obiettivo è che siano colorate solo le celle contenenti latte e latte intero.
Fammi sapere.
Post: 948
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
25/10/2021 15:27

Salve a tutti
Ma non mi sembra che la formula da te inserita sia quella suggerita da @Dodo47 (ciao Domenico)
Fra l'altro ti veniva precisato che il suggerimento era solo per la colonna B ("ti faccio un esempio solo per la col. B")

Vorrei sbagliarmi ma credo che ci voglia VBA (con la FC ci sono troppe condizioni)

Ciao,
Mario
Post: 2.472
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
25/10/2021 15:57

ciao
prova questa


=E($A1<>"";SOMMA(SE.ERRORE(RICERCA($A1;$X$1:$AK$1);0))>0)

Post: 2
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
25/10/2021 16:15

Grazie mille,

questa seconda formula funziona, solo che necessità della corrispondenza totale del testo nella cella condizionata.

Ciò significa che se scrivo LATTE si colora, ma se scrivo LATTE SCREMATO no. Lo stesso se scrivo FORMAGGIO funziona, ma con FORMAGGIO GRATTUGGIATO no.

E' possibile risolvere anche questo problema oppure devo fare un elenco preciso con ogni possibile combinazione esistente?

Il problema è che l'elenco diventerebbe molto complesso ed anche un singolare o plurale o una digitazione imperfetta farebbe si che la FC non vada più.

Comunque sia è già un enorme passo avanti.

Post: 2.473
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
25/10/2021 16:21

ciao
=E($A1<>"";SOMMA(SE.ERRORE(RICERCA("*"&$A1&"*";$X$1:$AK$1);0))>0)

bastava leggere le due formule eh!😏
Post: 3
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
25/10/2021 16:48

scusa l'ignoranza,
ma anche così la corrispondenza continua ad essere completa, e non parziale.
Allego un file prova per capire cosa sbaglio.

Grazie ancora.
Post: 2.474
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
25/10/2021 18:34

ciao
è chiaro che latte
lo trova sia in
LATTE
che in
LATTE SCREMATO

ma se scrivi latte scremato
excel cerca tutte le parole non latte.

cosa vuoi scorporare le parole e cercarle tutte e due?

prova questa
utilizza la prima parola
=E($A1<>"";SOMMA(SE.ERRORE(RICERCA("*"&SE.ERRORE(SINISTRA($A1;TROVA(" ";$A1));$A1)&"*";$X$1:$AK$1);0))>0)
[Modificato da federico460 25/10/2021 19:05]
Post: 3.234
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
25/10/2021 19:20

Re:
Simone (3ilV211025), 25/10/2021 12:38:


voglio che la cella A1 si colori come segue:

- blu se contiene una parola presente nelle celle b1:b10
- giallo se contiene una parola presente nelle celle C1:C10
- rosso se contiene una parola presente nelle celle d1:d10




ciao
io ho risposto alla tua domanda...se poi tu cambi le carte in tavola è un altro paio di maniche

saluti



Domenico
Win 10 - Excel 2016
Post: 4
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
26/10/2021 09:05

Scusate tutti,
io non ho cambiato carte in tavola e non mi lamento certo di soluzioni che fin qui non sono andate bene, anzi ringrazio tutti per il tempo dedicato.
Mi piace utilizzare excel ma purtroppo ne ho una conoscenza abbastanza limitata appena usciamo dalle classiche formule, e per questo mi rivolgo a voi, sperando di imparare anche qualcosa.

Siccome l'argomento è un po complesso probabilmente avrò esposto male la mia necessità. Cerco di riassumerla in maniera più chiara possibile rimandando anche il file per chiarezza:

- la parola LATTE (contenuta in un elenco di "parole chiave") deve far colorare le celle contenenti LATTE in ogni sua combinazione (es. LATTE, LATTE SCREMATO e CREMA di LATTE)

Questo perchè le combinazioni che utilizzano la parole LATTE nei vari fogli di lavoro che andranno generati, sono innumerevoli ed al momento non completamente prevedibili.

Allo stato dei fatti la situazione è la seguente:
- la formula =E($A1<>"";SOMMA(SE.ERRORE(RICERCA($A1;$X$1:$AK$1);0))>0)
funziona solo nel caso di corrispondenza completa tra parola chiave e cella con FC

- la formula =E($A1<>"";SOMMA(SE.ERRORE(RICERCA("*"&SE.ERRORE(SINISTRA($A1;TROVA(" ";$A1));$A1)&"*";$X$1:$AK$1);0))>0)
funziona anche con per le celle che iniziano per LATTE (es. LATTE in POLVERE) ma non che la contengono in altri punti (es. CREMA di LATTE)

Questo sarebbe un problema marginale perchè i casi non coperti sarebbero pochi.

Il problema più grosso è che non riesco a fare funzionare questa seconda formula nel foglio di lavoro reale perchè l'elenco delle "parole chiave" sta nel foglio2, mentre le celle con FC nel foglio1.

Se qualcuno avesse voglia di fare quest'ultimo passaggio, in allegato trova il file che andrò ad utilizzare.

Dopo di ciò prometto che non vi disturberò più😅. Promesso.
Post: 949
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
26/10/2021 10:15

Ciao a tutti
Ribadisco che, forse, bisogna ricorrere al VBA.
Ecco una macro che (ne tuo "Foglio prova" fa quello che chiedi.
Inserisci la macro in un Modulo standard e associala ad un pulsante sul Foglio.
Elimina la FC altrimenti le parole vengono colorate in blu (io ho messo un verde)
Option Explicit
Option Compare Text

Sub TrovaParola()
Dim rng As Range, testo As String, parola() As String
Dim rCell As Range, n As Long, i As Long, j As Long, ur As Long
Columns(1).Interior.ColorIndex = xlNone
Columns(1).Font.ColorIndex = 1
Set rng = Range("X1:AE1")
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  testo = Cells(i, 1).Value
  parola = Split(testo, " ")
  For j = 0 To UBound(parola)
    For Each rCell In rng
      With rCell
        n = InStr(.Text, parola(j))
        If n > 0 Then
          Cells(i, 1).Interior.ColorIndex = 4
        End If
      End With
    Next
  Next j
Next i
Set rng = Nothing
End Sub


Fai sapere. Ciao,
Mario
[Modificato da Marius44 26/10/2021 10:16]
Post: 2.475
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
26/10/2021 11:50

ciao
ma tu vuoi colorare gli allergeni
della colonna A della distinta?

cosa devi colorare che non si capisce

secondo me stiamo lavorando al contrario
la ricerca va fatta diversamente

a questo punto
usa il vba
[Modificato da federico460 26/10/2021 11:53]
Post: 5
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
26/10/2021 11:55

Si esattamente,
devo colorare gli ingredienti della colonna A del foglio distinta se contengono gli allergeni elencati nelle varie colonne del foglio "allergeni".
Ciao e grazie
Post: 2.476
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
26/10/2021 15:11

ciao
se metti tutti gli elementi
sugli allergeni
puoi usare
=MAX(SE(Allergeni!$B$2:$I$20=$A16;RIF.COLONNA(Allergeni!$B$2:$I$20)))>0

ma così come è scritto come fai a sapere se il pecorino è latte?
CREMA di LATTE perchè non è nella lista allergeni

excel non può sapere che il pecorino è fatto con il latte di pecora
[Modificato da federico460 26/10/2021 15:14]
Post: 6
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
26/10/2021 15:34

La parola pecorino è inserita nella lista allergeni "LATTE", quindi lo intercetta facilmente. Il problema si presenterebbe se scrivessi Pecorino Romano o Pecorino siciliano o grattuggiato, o Dop, o tutta una serie di qualificazioni che mi viene complicato prevedere, il tutto moltiplicato per ogni ingrediente utilizzato. Era questo il problema principale evidentemente non risolvibile con formule ma solo con VBA.


Infatti la macro di Marius sul foglio prova funziona, solo che andrebbe adattata al foglio reale ed io non ci sono riuscito.
Ma non voglio più rompere quindi vedrò di crearmi un elenco ingredienti quanto più completo possibile.

Vi ringrazio tutti e alla prossima!!!
Post: 950
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
26/10/2021 15:58

Ciao
La macro che ti ho suggerito è stata concepita per il "Foglio Prova" ma può benissimo essere adattata al Foglio con gli allergeni e "leggere" tutte le righe di ogni colonna. Devi solo perderci un po' di tempo per costruire i cicli necessari.
Non arrenderti! Prova e se non riesci .... chiedi aiuto.

Ciao,
Mario
Post: 7
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
26/10/2021 17:14

Grazie della fiducia Mario,
ma mio malgrado non ho basi di linguaggio VBA. Quindi quello che riesco ad adattare lo devo solo all'intuizione😂.
Vediamo se in questa occasione riesco a farmi un po di cultura, approfittando della tua disponibilità:

PROBLEMA 1: la macro andrà applicata al Foglio1 denominato "Distinta" anzichè al foglio prova. Va specificato, o lui in automatico applica la regola a tutti i fogli attivi?

PROBLEMA 2: rispetto alla prova, nel caso reale le colonne su cui applicare la macro e le "parole chiave" stanno su 2 fogli diversi (Distinta, Allergeni). Come si identificano nella macro? Ho visto che nella tua specifichi solo il range senza foglio di provenienza.

Come vedi sono proprio cose base dovute alla mancata conoscenza dello strumento.
Post: 951
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
26/10/2021 17:30

Ciao
Ti allego il file con la macro inserita nel modulo del Foglio("Distinta")
Ogni dato scritto nella Distinta fa scattare il colore (uguale a quello della colonna dove lo ha trovato)
questo il codice
Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh1 As Worksheet, sh2 As Worksheet
Dim ur As Long, uc As Long, j As Long, k As Integer, n As Integer
Dim rng As Range, rCell As Range
Dim parola() As String
Set sh1 = Worksheets("Distinta")
Set sh2 = Worksheets("Allergeni")
uc = sh2.Cells(1, Columns.Count).End(xlToLeft).Column
If Not Intersect(Target, Sheets("Distinta").Range("A:A")) Is Nothing Then
  If Target.Cells.Rows.Count > 1 Then
    Stop 'occorre gestire la selezione multipla
         'e anche il caso di cancellazione di dato
  End If
  For j = 2 To uc
    ur = sh2.Cells(Rows.Count, j).End(xlUp).Row
    Set rng = sh2.Range(sh2.Cells(2, j), sh2.Cells(ur, j))
    parola = Split(Target, " ")
    For k = 0 To UBound(parola)
      For Each rCell In rng
        With rCell
          n = InStr(.Text, parola(k))
          If n > 0 Then
            Target.Interior.ColorIndex = sh2.Cells(1, j).Interior.ColorIndex
            GoTo xit
          End If
        End With
      Next
    Next k
  Next j
End If
xit:
Set sh1 = Nothing
Set sh2 = Nothing
End Sub

Ci sarà da gestire eventuali errori di digitazione ma anche la cattura di errori (per esempio se cancelli un dato va in debug, come pure se non trova il dato fra quanto scritto nel Foglio("Allergeni"). Ma questo può venire dopo, magari studiando un po' come hai detto.

Fai sapere. Ciao,
Mario
Post: 8
Registrato il: 25/10/2021
Età: 38
Utente Junior
2016
OFFLINE
26/10/2021 18:01

Sei un grande!!!
Hai ragione i debug ci sono e andranno gestiti.
Magari un giorno ci riuscirò.
Grazie di tutto.
Vota: 15MediaObject5,00220 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 14:01. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com