› Excel e gli applicativi Microsoft Office › Trova e sostiuisci multiplo
-
AutoreArticoli
-
buon giorno a tutti,
ho un piccolo problemino e spero possiate aiutarmi,
quotidianamente ricevo una lista di nomi e cognomi che hanno all'interno dei caratteri speciali come per esempio "ò, ç".
io devo esportare questa lista ma prima devo sostituire questi caratteri con quelli normali altrimenti dove la vado ad inserire mi da errore, esiste una maniera per fare trova e sostituisci tutti i caratteri prendendoli magari da una lista esterna preimpostata?
ho letto una vecchia discussione ( https://www.excelvba.it/Forum/story/Excel_e_gli_applicativi_Office/Find_e_Replace_multipli_per_Excel.html ) ma non essendo molto pratico di excel non riesco ad andare avanti.
Grazie mille a tutti per l'aiuto.
Allora, sono riuscito ad eseguire la macro, e funziona tutto, facendo riferimento a quel vecchio tread.
Ora ho un altro problema, ci sono alcune voci che hanno degli spazi alla fine che chiaramente quando vado ad esportare mi da errore, vorrei poterli sostituire con altri senza spazio.
faccio un esempio calcolando che il simbolo - è in realtà uno spazio
pizza----=pizza
spero di essere stato chiaro.
grazie
Buona giornata, @sklere;
Sarebbe opportuno allegassi un File (senza Dati sensibili) con alcuni Record significativi già inseriti e chiarissi ciò che desideri ottenere.
Questo eviterebbe a chi desidera aiutarti dover ricostruire una probabile struttura con il rischio di non centrare l'obiettivo.Giuseppe
Ciao @sklere!
Io per eliminare gli spazi in coda ti consiglierei una macro che scorre tutte le righe del tuo foglio Excel e vefica (sulle colonne che ti interessano) se siano presenti spazi superflui in coda e li elimini!
Ciao
Paolo
l'idea è questa, è il come fare il problema 😉
la lista purtroppo è solo di dati sensibili, dovrei farne una specifica con degli esempi.
Nel pomeriggio se riesco la allego, nel frattempo grazie comunque grazie per la disponibilità.
Ho preparato un file di esempio su come ricevo e come vorrei che venissero modificati i nomi ed alcuni campi.
Come potete notare, per i nomi credo di aver risolto eseguendo la macro come spiegato nel vecchio tread che ho linkato sopra che si collega al file txt che vi allego, il problema ora è sul tipo di documento.
Mi spiego meglio, se vedete la voce IDENTITY CARD ha tre spazi alla fine, quando vado a sostiurilo automaticamente me lo sostituisce ma mi lascia i tre spazi finali, come posso fare in modo che me li tolga?
Vorrei inoltre che la voce DIPLOMATIC PASSOPORT venisse sostiuita con Passport, ma non me lo fa e mi restituisce DIPLOMATIC Passport.
come posso fare?
Spero di essere stato abbastanza chiaro.
Grazie ancora a tutti
Allegati:
You must be logged in to view attached files.Buona sera, @sklere;
nel tuo File non ci sono Codici VBA.Per eliminare gli spazi finali potresti utilizzare un Ciclo For Next, io ho utilizzato For x = 1 To 10, con un controllo dell'ultio carattere a destra di ogni Valore.
Se l'ultimo carattere a destra è <> " " allora esci dal Ciclo For altrimenti elimina l'ultimo carattere a destra.Rimane il problema della struttura "minuscolo con il primo carattere maiuscolo"; problema risolvibile ma è veramente necessaria questa struttura?
Per quanto concerne "DIPLOMATIC PASSPORT = Passport" la cosa si può risolvere con un controllo dopo l'eliminazione degli spazi finali.
Giuseppe
Buona sera, @sklere; nel tuo File non ci sono Codici VBA.
Ciao grazie e scusa se rispondo solo ora ma sono stato molto impegnato, allora ho problemi anche con la lista esterna, c'è un comando che posso dare direttamente nella macro che mi sostituisca le seguenti lettere con le altre?
Alla fine i caratteri sono e saranno sempre e solo questi:
Č, C
č, c
Ć, C
ć, c
ž, z
Đ, đ
Ž, Z
Ü, U
Ä, A
ä, a
Ö, O
ö, o
Ü, U
ü, u
ß, SS
Ñ, N
ñ, n
ё, eCiao e grazie
Ciao @sklere!
Mi pare di capire che tu non voglia utilizzare il VBA...
Prova con la funzione SOSTITUISCI di Excel...
Se non ti soddisfa dovrai per forza passare ad una macro!
Ciao
Paolo
Ciao @sklere!
Esattamente quello che vorrei fare, ma sono poco esperto, e lo vorrei fare senza collegarmi ad un file esterno come invece spiegava nel tread linkato in alto e che ti riporto:
'In un Modulo: Option Explicit Sub find_replace() Dim free_file As Integer, s As String, v As Variant free_file = FreeFile Open "lista.txt" For Input As free_file While Not EOF(1) Line Input #1, s v = Split(s, "=") Cells.Replace Trim(v(0)), Trim(v(1)), MatchCase:=True Wend Close free_file MsgBox "Operazioni completate.", vbInformation, "Fatto" End Sub
Hai già risolto il primo quesito ? più carne al fuoco metti e meno risposte avrai
Ciao
HO buttato giù una piccola macro che fa quello che richiedi
la prima parte sostituisce i cartteri speciali, la seconda parte togli gli spazi in eccesso.
Per la prima parte ho sfruttato il trova e sostituisci di excel. Per la seconda ho pensato di usare una funzione già presente in excel.
Sub Macro1() ' ' Macro1 Macro ' ' Dim MioVettore(1 To 16, 1 To 2) Dim Indice Dim CEllaW MioVettore(1, 1) = ChrW(262) MioVettore(1, 2) = "C" MioVettore(2, 1) = ChrW(262) MioVettore(2, 2) = "c" MioVettore(3, 1) = "Ð" MioVettore(3, 2) = "d" MioVettore(4, 1) = "Ž" MioVettore(4, 2) = "Z" MioVettore(5, 1) = "Ä" MioVettore(5, 2) = "A" MioVettore(6, 1) = "ä" MioVettore(6, 2) = "a" MioVettore(7, 1) = "Ö" MioVettore(7, 2) = "O" MioVettore(8, 1) = "ö" MioVettore(8, 2) = "o" MioVettore(9, 1) = "Ü" MioVettore(9, 2) = "U" MioVettore(10, 1) = "ü" MioVettore(10, 2) = "u" MioVettore(11, 1) = "ß" MioVettore(11, 2) = "SS" MioVettore(12, 1) = "Ñ" MioVettore(12, 2) = "N" MioVettore(13, 1) = "ñ" MioVettore(13, 2) = "n" MioVettore(14, 1) = "IDENTITY CARD" MioVettore(14, 2) = "Identity card" MioVettore(15, 1) = "PASSPORT" MioVettore(15, 2) = "Passport" MioVettore(16, 1) = "DIPLOMATIC Passport" MioVettore(16, 2) = "Passport" For Indice = 1 To UBound(MioVettore, 1) ActiveSheet.Cells.Replace What:=MioVettore(Indice, 1), Replacement:=MioVettore(Indice, 2), LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False ' ActiveCell.FormulaR1C1 = "=TRIM(R[-8]C[-8])" ' Range("F4").Select Next Indice ActiveSheet.UsedRange.Select For Each CEllaW In ActiveSheet.UsedRange CEllaW.Select If CEllaW <> "" Then CEllaW.Formula = WorksheetFunction.Trim(CEllaW.Text) End If Next End Sub
L'unica attenzioe sono i caratteri speciali: alcuni non vengono riconosciuti dall'editor di VBA pertanto ho dovuto cercarli nel'inserisci simboli e identificarli tramite il codice UNICODE.
Ciao
Luca
Ciao
Grazie mille l'ho provato ed è proprio quello che mi serviva, non so come ringraziarti, mi hai risolto un sacco di fastidiose operazioni.
Grazie ancora
Allora, rieccomi a riscrivere perchè ho notato che ci sono dei problemini, praticamente questa macro agisce su tutte le colonne e a volte mi stravolge alcuni dati, soprattutto quelli dei numeri di documento e delle date, è possibile far si che la macro analizzi solo specifiche colonne? nello specifico vorrei che analizzasse solo le colonne B-C e H, ovvero NOME COGNOME e TIPO DI DOCUMENTO.
Scusate se "rompo" ma di VBA e EXCEL non ci capisco molto.
Grazie mille a tutti
-
AutoreArticoli