Excel e gli applicativi Microsoft Office Trova e sostiuisci multiplo

LoginRegistrati
Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
  • Autore
    Articoli
  • #26812 Risposta

    sklere
    Partecipante

      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.

       

      #26813 Risposta

      sklere
      Partecipante

        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

         

        #26814 Risposta

        GiuseppeMN
        Partecipante
          7 pts

          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

          #26815 Risposta
          PMC77
          PMC77
          Partecipante
            7 pts

            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

            #26817 Risposta

            sklere
            Partecipante

              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à.

               

              #26819 Risposta

              sklere
              Partecipante

                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.
                #26822 Risposta

                GiuseppeMN
                Partecipante
                  7 pts

                  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

                  #26853 Risposta

                  sklere
                  Partecipante

                    GiuseppeMN ha scritto:

                    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
                    ё, e

                     

                    Ciao e grazie

                    #26854 Risposta
                    PMC77
                    PMC77
                    Partecipante
                      7 pts

                      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

                      #26855 Risposta

                      sklere
                      Partecipante

                        PMC77 ha scritto:

                        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
                        #26856 Risposta
                        patel
                        patel
                        Moderatore
                          39 pts

                          Hai già risolto il primo quesito ? più carne al fuoco metti e meno risposte avrai

                          #26860 Risposta
                          Luca73
                          Luca73
                          Partecipante
                            28 pts

                            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

                            #26873 Risposta

                            sklere
                            Partecipante

                              Luca73 ha scritto:

                              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

                               

                               

                              #26936 Risposta

                              sklere
                              Partecipante

                                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

                                 

                              LoginRegistrati
                              Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
                              Rispondi a: Trova e sostiuisci multiplo
                              Gli allegati sono permessi solo ad utenti REGISTRATI
                              Le tue informazioni:



                              vecchio frac - 2750 risposte

                              albatros54
                              albatros54 - 1009 risposte

                              patel
                              patel - 935 risposte

                              Marius44
                              Marius44 - 795 risposte

                              Luca73
                              Luca73 - 685 risposte