Condividi:        

richiamo a celle in excel

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

richiamo a celle in excel

Postdi diegodx » 07/02/18 13:31

Buongiorno,
credo di chiedere una banalità, ma dopo svariati tentativi non vi è modo di risolvere la questione.
Versione excel 2007

Il problema è il seguente:
in alcuni fogli di calcolo richiamo mediante la seguente formula (=+SE(VAL.ERRORE(CERCA.VERT($A5;DataBase!$A:$U;21;FALSO));0;CERCA.VERT($A5;DataBase!$A:$U;21;FALSO)) il testo contenuto il un foglio che funge da database.
Le celle contengono del testo.
In queste celle il testo è formattato non tutto uguale ma alcune parole sono in grassetto, vorrei che quando mediante la formula il testo viene richiamato tale formattazione rimanesse invariata e che le parole in grassetto continuino a rimanere tale.
Non posso ovviamente fare un copia incolla manuale copiando il formato.

grazie dell'aiuto.

Diego
diegodx
Newbie
 
Post: 4
Iscritto il: 07/02/18 13:22

Sponsor
 

Re: richiamo a celle in excel

Postdi alfrimpa » 07/02/18 22:04

Ciao Diego

Sarei lieto di essere smentito ma, se ho capito bene, non credo che quello che richiedi si possa fare.

Se in una cella c'è una formula che restituisce una stringa non è possibile applicare una formattazione solo a una parte della stringa medesima e questo perchè la formattazione è applicata sulla cella e non sul risultato della funzione.

Comunque se alleghi un piccolo file di esempio (con il risultato desiderato inserito a mano) si può provare a vedere.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: richiamo a celle in excel

Postdi diegodx » 08/02/18 19:50

Grazie della risposta, quindi forse il sapere che non è possibile un po mi consola, perchè veramente non so che pesci pigliare.
Ogni modo allego un file di esempio.
Nel file ho scritto nella cella A1 tre parole, di cui una in grassetto.
Nella cella A3 richiamo mediante la funzione +A1 il contenuto della cella A1 e come potrete vedere la parola in grassetto ora è diventata normale.

In alternativa c'è un modo per applicare un filtro o qualcosa del genere che mi faccia diventare in grassetto certe parole? mi spiego meglio, al termine della rielaborazione dei miei dati ottengo un file di stampa che contiene testo e numeri, di tutto il testo presente nelle varie celle vi sono delle parole (una decina) costanti che devo far diventare in grassetto. Ovviamente per ora debbo scansionare tutte le celle contenenti testo, evidenziare le parole di interesse ed applicare manualmente la formattazione grassetto.

http://www.filedropper.com/esempio_9
diegodx
Newbie
 
Post: 4
Iscritto il: 07/02/18 13:22

Re: richiamo a celle in excel

Postdi Anthony47 » 08/02/18 23:10

Le formule calcolano dei valori. Inoltre, mentre puoi formattare separatamente le parole all'interno di una stringa (es in A1), ad una cella che contiene una formula puoi applicare una sola formattazione, valida su tutta la cella. Quindi anche con quello che hai in mente non vai lontano.
Da come la racconti, l'idea che mi sono fatto e' che si possa creare una copia del foglio con i risultati; si trasformano tutti i risultati in valori; su questi valori cerchi cella dopo cella le parole chiave e le metti in grassetto.
Ovviamente fatto con una macro e non a mano
Ad esempio:
-in un foglio che chiami Dizio inserisci, da A2 verso il basso, le singole parole o frasi che vuoi mettere in grassetto
-poi usi questa macro:
Codice: Seleziona tutto
Sub MakeBold()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=109395
'
Dim Diz As Worksheet, I As Long, myC As Range
'
Set Diz = Sheets("Dizio")
'Crea una copia del foglio corrente:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'Elimina le formule:
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Range("A3").Select
'Cerca le parole del dizionario e metti in Bold:
For I = 2 To Diz.Cells(Rows.Count, 1).End(xlUp).Row
    For Each myC In ActiveSheet.UsedRange
        iniz = InStr(1, myC.Range("A1").Value, Diz.Cells(I, 1), vbTextCompare)
        If iniz > 0 Then
            myC.Range("A1").Characters(Start:=iniz, Length:=Len(Diz.Cells(I, 1))).Font.Bold = True
        End If
    Next myC
Next I
End Sub

Il codice va messo in un "modulo standard del vba"; per questo, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-copi il codice e lo incolli nel frame destro vuoto del modulo appena creato.

Poi torni su Excel, selezioni il foglio di cui vuoi mettere le parole in grassetto e lancia la Sub MakeBold:
-premi Alt-F8, scegli MakeBold dall'elenco di macro disponibili, premi Esegui.

Verra' creata una copia del foglio, si cercheranno le parole /frasi elencate in colonna A di foglio Dizio e si metteranno in grassetto.

Questo foglio ho capito che deve essere stampato; dopo la stampa puo' essere eliminato.

Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: richiamo a celle in excel

Postdi diegodx » 10/02/18 01:18

Alla prima prova sembra funzionare, anche se forse con qualche fallanza, nel senso che salta qualche parola da rendere in grassetto.
Appena ho un attimo verifico con calma e vi faccio sapere.

Ogni modo grazie infinite.
diegodx
Newbie
 
Post: 4
Iscritto il: 07/02/18 13:22

Re: richiamo a celle in excel

Postdi Anthony47 » 10/02/18 13:43

Una macro o funziona o non funziona; non ci sono vie intermedie.
Se qualcosa non funziona allora allega il tuo file di test contenente le frasi da esaminare e le parole da evidenziare e indica dove non funziona.

Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: richiamo a celle in excel

Postdi diegodx » 19/08/18 09:17

Buongiorno, rispondo in calce a quanto avevo gia richiesto mesi e mesi fa,
purtroppo per motivi vari il mio progetto è stato parzialmente arrestato a suo tempo, ma ora sono in fase di ripresa.
Relativamente a quanto sopra riscontro un problema di questo tipo:
applicando la macro come suggeritomi la cosa funziona direi, se non ce applica le modifiche ad una sola parola e non a tutte.
Mi spiego meglio con n esempio e poi allego un file su cui dovrei applicare tale macro.

Sulla cella "ingredienti" compaiono una serie di ingredienti, che spesso possono ripetersi, come ad esempio la parola "soia" o "latte".
Se applico la macro per far diventare in grassetto le parole contenute nel foglio "dizio" mi restituisce un nuovo foglio con però in grassetto la sola prima parola "soia" e le successive rimangono normali.
Vi è modo di far si che tutte diventino in grassetto?

Grazie e scusate la riesumazione di un argomento così datato, ma ho pensato fosse piu utile continuare sulla stessa discussione.

http://www.filedropper.com/cioccofricio
diegodx
Newbie
 
Post: 4
Iscritto il: 07/02/18 13:22

Re: richiamo a celle in excel

Postdi Anthony47 » 19/08/18 23:31

Per gestire la ripetizione delle parole la macro cabia come segue:
Codice: Seleziona tutto
Sub MakeBold2()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=109395
'
Dim Diz As Worksheet, I As Long, myC As Range, Iniz As Long
Dim Beg As Long, reTry As Boolean
'
Set Diz = Sheets("Dizio")
'Crea una copia del foglio corrente:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'Elimina le formule:
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Range("A3").Select
'Cerca le parole del dizionario e metti in Bold:
For I = 2 To Diz.Cells(Rows.Count, 1).End(xlUp).Row
    For Each myC In ActiveSheet.UsedRange
        Beg = 1
reCK:
        reTry = False
        Iniz = InStr(Beg, myC.Range("A1").Value, Diz.Cells(I, 1), vbTextCompare)
        If Iniz > 0 Then
            Beg = Iniz + 1: reTry = True
            myC.Range("A1").Characters(Start:=Iniz, Length:=Len(Diz.Cells(I, 1))).Font.Bold = True
        End If
        If reTry Then GoTo reCK
    Next myC
Next I
End Sub


Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "richiamo a celle in excel":


Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti