Sostituzione di sole parole intere in Excel (Microsoft Excel)
Gary vuole trovare e sostituire un’abbreviazione come “sys” e sostituirla con “systems”. Il problema è che se sostituisce tutte le occorrenze, trasforma le istanze esistenti di “system” in “systemtem”. Gary potrebbe esaminare ogni occorrenza e sostituirla individualmente, ma ciò richiederebbe un’eternità. Si chiede se esiste un modo per fare in modo che Excel sostituisca solo le occorrenze “intere parole” di “sys” con “sistemi” come in Word.
Coloro che hanno familiarità con le funzionalità Trova e sostituisci di Excel potrebbero pensare, a prima vista, che potresti usare “Abbina contenuto intero cellulare”
impostazione per fare il lavoro. Ciò funziona, tuttavia, solo se l’abbreviazione “sys” è l’unica cosa in una cella. Nella situazione di Gary, non è così. Ha frasi e intere frasi che contengono “sys” (come in “sys admin” o “È necessario un sys check”). Da qui la sua richiesta di qualcosa come l’impostazione della “parola intera” di Word.
Con questo in mente, ci sono alcune cose che puoi provare; la soluzione migliore per te dipenderà dalla natura del testo nel tuo foglio di lavoro.
Ad esempio, se l’unico probabile punto di confusione è la parola “sistema”,
allora sarà più facile sostituire semplicemente “sistema” con qualcosa di unico, come “\ {[]}”. (Tendo ad apprezzare le parentesi graffe e le parentesi perché sono univoche nella maggior parte dei dati.) Quindi sostituisci “sys” con “systems” e infine sostituisci “\ {[]}” con “system”.
Se ci sono altri punti di confusione oltre a “sistema”, puoi ricorrere all’aggiunta di spazi nel testo Trova. In altre parole, cerca “sys” (con gli spazi) e sostituiscilo con “systems” (di nuovo, con gli spazi). Questo troverà tutte le occorrenze correttamente fintanto che sys non è seguito da un segno di punteggiatura, non si trova all’inizio di una cella e non si trova alla fine di una cella.
Naturalmente, potresti eseguire ricerche aggiuntive per ottenere alcune di queste informazioni. Ad esempio, potresti cercare “sys” (spazio solo alla fine)
per trovare le occorrenze all’inizio di una cella. Non sarebbe utile cercare “sys” (spazio solo all’inizio) perché corrisponderebbe a qualsiasi occorrenza di “system” preceduta da uno spazio. Nelle ricerche sequenziali potresti anche cercare “sys” seguito da punto, virgola, punto interrogativo, punto esclamativo, punto e virgola, ecc.
Se preferisci utilizzare una macro, il seguente è un esempio di come potresti affrontare il problema. La macro ti chiede cosa vuoi trovare e cosa vuoi sostituirlo.
Sub ReplaceOnlySpecifirdWord() Dim c As Range, rng As Range, rngArea As Range Dim vFind As String, vReplace As String Dim v As Variant Dim arrSplit As Variant Dim s As String Dim i As Integer, n As Long Dim b As Boolean Const csDELIMITER = " " On Error Resume Next ' Reference Constants only Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants) If rng Is Nothing Then MsgBox "There are no constants on active sheet...", vbExclamation Exit Sub End If On Error GoTo 0 ' Get Find and Replace strings v = InputBox(Prompt:="Please enter String to be replaced.") If v <> "" Then vFind = v Else MsgBox "Wrong entry; app is going to be terminated.", vbExclamation Exit Sub End If v = InputBox(Prompt:="Please enter Replace String.") If v <> "" Then vReplace = v Else MsgBox "Wrong entry; app is going to be terminated.", vbExclamation Exit Sub End If Application.ScreenUpdating = False Application.Calculation = xlCalculationManual n = 0 For Each rngArea In rng.Areas For Each c In rngArea.Cells b = False arrSplit = Split(c.Value, csDELIMITER) For i = LBound(arrSplit) To UBound(arrSplit) If arrSplit(i) = vFind Then arrSplit(i) = vReplace n = n + 1 b = True End If Next i If b Then s = vbNullString For i = LBound(arrSplit) To UBound(arrSplit) s = s & arrSplit(i) If i <> UBound(arrSplit) Then s = s & csDELIMITER End If Next i c.Value = s End If Next c Next rngArea Application.Calculation = xlCalculationAutomatic MsgBox "Replaced " & n & " words...", vbInformation End Sub
La macro fa il suo lavoro trovando tutte le parole in ogni cella (a turno).
Se la parola corrisponde a ciò che stai cercando, viene sostituita. Il contenuto della cella viene quindi ricomposto.
C’è uno svantaggio in questo approccio: la corrispondenza è molto letterale. Ciò significa che “sys” corrisponderà a “sys”, ma non a “Sys”, “SYS” o “sys” seguito da un segno di punteggiatura. (La macro utilizza gli spazi come delimitatore tra le parole.)
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (13391) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.