Se ti imbatti in una situazione in cui richiedi solo la prima parola in ogni riga di una cella anziché tutto il carattere, allora devi leggere questo articolo. Il seguente tutorial ti aiuterà a recuperare solo la prima parola tramite il codice VBA in Excel.
In questo articolo, ci concentreremo su come mantenere solo la prima parola in ogni riga di una cella separata da punto e virgola tramite codici macro.
Domanda: I dati su cui sto lavorando hanno a volte più righe in ciascuna cella e voglio estrarre solo la prima parola.
Puoi trovare la domanda originale qui
Di seguito è riportata un'istantanea del testo di input (Prima del foglio)
Di seguito è riportato un'istantanea del testo di input (Dopo il foglio) nella colonna A e richiede l'output nella colonna B; fare riferimento all'istantanea di seguito:
Per ottenere il codice; dobbiamo seguire i passaggi seguenti per avviare l'editor VB
- Fare clic sulla scheda Sviluppatore
- Dal gruppo Codice, seleziona Visual Basic
- Copia il codice sottostante nel modulo standard
Funzione FirstWordOnly(rng As Range) Dim Arr() As Variant Dim Count As Integer Dim i As Integer Count = Len(rng) - Len(Replace(rng, Chr(10), "")) If Count > 0 Then ReDim Arr (0 Per contare) Per i = 0 Per contare Se i = 0 Allora Arr(i) = Left(rng, InStr(1, rng, " ") - 1) ElseIf j = 0 Allora j = InStr(1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) Altrimenti j = InStr(j + 1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) End If Next FirstWordOnly = Join(Arr, "; ") Else If InStr(1, rng, " ") > 0 Then FirstWordOnly = Left(rng, InStr(1, rng, " ")) Else FirstWordOnly = rng End If End If End Funzione
Ora, il codice VBA è pronto per l'uso; utilizzeremo la funzione definita dall'utente appena creata, ad esempio "FirstWordOnly" in Before Sheet.
- Per ottenere l'output utilizzando UDF nella cella B2, la formula sarà
- =Solo prima parola(A2)
Spiegazione del codice:
Nel codice sopra, abbiamo usato le funzioni COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
- 'Len(rng)'; questo controllerà la lunghezza della cella a cui ci riferiamo
- 'Sostituisci(rng, Chr(10), """); Il codice controlla il Chr(10) cioè l'interruzione di riga in ogni riga e quindi sostituisce con doppie virgolette (niente)
- 'Count = Len(rng) - Len(Replace(rng, Chr(10), ""))'; Count memorizzerà la differenza di lunghezza di ogni riga dopo aver sostituito l'interruzione di riga
- Se Conte > 0; questo controllerà se la lunghezza di Count è maggiore di zero e se viene trovata uguale a zero, ovvero la cella è vuota, quindi la condizione IF non eseguirà il codice. Per verificarlo, puoi usare =FirstWordOnly(A5) nella cella B5 e restituirà 0
- Se la cella non è vuota, il ciclo For verrà utilizzato con la condizione IF e, con la funzione LEFT, recupereremo la prima parola
- La funzione JOIN aggiungerà il punto e virgola alla fine se ci sono più righe in ogni cella
Conclusione: Usando UDF possiamo rimuovere tutto in ogni riga di cella tranne la prima parola tramite VBA. Questa funzione funzionerà in tutte le versioni dalla vecchia alla nuova, ad esempio Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Se ti è piaciuto il nostro blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare, completare o innovare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica