Excel Smart Yalnızca belirli karakterleri Bul ve Değiştir


3

Tüm excel çalışma kitabında INC'yi ULUSLARARASI ve NA'dan ULUSAL KURULUma bir excel Makro veya Bul ve Değiştir iletişim kutusuyla değiştirmek istiyorum. Ancak makroyu çalıştırdığımda veya Bul ve Değiştir iletişim kutusundan değiştirdiğimde, NA'nın CHINA'daki son 2 karakterinin yerini aldı ve CHINATIONAL MONTAJ, INTERIOR - INTERNATIONALERIOR oldu.

Şimdi, Excel'in çalışma kitabında NA karakterini yalnızca akıllıca bulmasını istiyorum, başka bir karaktere eklenmeyen INT karakteriyle aynı karakterde bulunmuyor.


Makroyu paylaşabilir misiniz (bunun VBa kodu olduğu varsayılarak)
Dave

Hangi Excel sürümünü kullanıyorsunuz?
dangowans,

Yanıtlar:


1

VBA yoluna giderseniz, kullanmayı deneyin Regular Expressions

İşte bir başlangıç

Sub ReplaceWithRE()
    Dim re As Object 'RegExp
    Dim rng As Range, cl As Range
    Dim sh As Worksheet
    Dim wb As Workbook
    Dim sReplace As String
    Dim aReplace(0 To 1, 0 To 1) As String
    Dim i As Long

    Set wb = ActiveWorkbook
    Set re = CreateObject("vbscript.regexp") ' New RegExp
    re.Global = True
    re.IgnoreCase = False
    re.MultiLine = True

    ' Load array of patterns and replacements
    aReplace(0, 0) = "\bINT\b"
    aReplace(0, 1) = "INTERNATIONAL"
    aReplace(1, 0) = "\bNA\b"
    aReplace(1, 1) = "NATIONAL ASSEMBLY"

    For Each sh In wb.Worksheets
        On Error Resume Next
        Set rng = sh.UsedRange.SpecialCells(xlCellTypeConstants)
        If Err.Number <> 0 Then
            Err.Clear
        Else
            On Error GoTo 0
            For Each cl In rng
                sReplace = cl.Value
                ' Test each cell for each pattern, replace when found
                For i = 0 To UBound(aReplace, 1)
                    re.Pattern = aReplace(i, 0)
                    If re.Test(sReplace) Then
                        sReplace = re.Replace(sReplace, aReplace(i, 1))
                    End If
                Next
                cl.Value = sReplace
            Next
        End If
    Next


End Sub

Harikasın!! Böyle büyük bir yardım için çok teşekkür ederim, çalışmak için benim için harika bir makro. Bana çok yardımcı oldu. Tekrar teşekkürler.
Asım,

3

Değiştirmek istediğiniz değerler kendi başlarına hücrelerde ise (başka bir metin yok), kesinlikle CharlieRB'nin çözümünü izleyin . Değerler hücrelerde bulunursa, ek metinle birlikte, biraz değiştirilmiş bir sürüm işe yarayabilir.

Bul ve Değiştir penceresini açın. "Değiştir" sekmesine tıklayın.

Bul ve Değiştir

"Neyi bul" ve "Şununla değiştir" değerlerini girin. "Tümünü Bul" düğmesine tıklayın.

Hangi kayıtların bulunduğunu ayrıntılarıyla gösteren listeyi gözden geçirin. Güncellemek istediğiniz kaydı vurgulayın ve "Değiştir" düğmesini tıklayın.


... ama “kayıt vurgulayın söylemek cevabınızı düzenlemek isteyebilirsiniz  ler (“Ben değiştirmeye ... Bütün Excel çalışma kitabındaki istiyoruz”) güncelleştirmek istediğiniz” ve belki Shift hakkında bir şey söylemek + tıklama ve Ctrl + tıklayın.
Scott

2

Gelen Find and Replacepencerede, kutuyu kontrol etmeniz gerekir Match entire cell contentssonra çalıştırın.

görüntü tanımını buraya girin


1
Pnuts: FWIW, bunun sorudan açıkça anlaşılmadığını düşünüyorum.
Scott,

@pnuts: sorgulayıcı görünüyor göz önüne alındığında, İngilizce "başka bir karakter eklemek değildir aynı şekilde karakter INT" mücadele edilecek olabilir çok iyi "herhangi başka bir karakterle dahil değildir çalışma kitabındaki karakterin NA" ile aynı anlama ; yani, " X dizesi başka bir karakter olmadan kendi başına bir hücrede."
Scott

Scott haklı, zayıf İngilizcem için özür dilerim, aynı şekilde daha önce belirtildiği gibi. Ama şimdi Chris Neilsen tarafından çözüldü.
Asım

İnanıyorum ki hepimiz aynı şekilde ne demek istediğinizi anladığımızı; emin olamadığımız diğer kelimelerdi. Bu arada, bir kimsenin sorusuna (bir yorumdan) yeni bir yorumda cevap verirken, o kişinin adından önce “@” den önce “@Scott, pnuts” da belirtilmesi gelenekseldir. Bu şekilde haberdar ediliriz. Bkz yorumlardaki yanıtlarken paragrafların Yorum biçimlendirme bölümünde Markdown Düzenleme Yardım sayfasının.
Scott

1
  1. Dosyanızı CSV dosyası olarak kaydedin. Çalışma sayfanızın bir alt kümesini değiştirmek istiyorsanız (örneğin, seçilen sütunlar ve / veya satırlar), o bölgeyi bir karalama dosyasına (veya sayfaya) kopyalayın ve CSV olarak kaydedin. Birden fazla sayfa değiştirmeniz gerekirse, bu işlemi her sayfa için tekrarlayın.
  2. CSV dosyasını bir tür akıllı metin düzenleyicisiyle düzenleyin (yani Not Defteri'nden daha akıllı).  vibunun için iyidir; gibi bir komut kullanın %s/\<INT\>/INTERNATIONAL/g. Microsoft Word muhtemelen yeterli olacaktır; More>>"Bul ve Değiştir" in altındaki "Yalnızca tam kelimeleri bul" seçeneğini kullanın .
  3. Düzenlenmiş CSV dosyasını tekrar Excel'de okuyun.
  4. Biçimlendirmeyi korumak için, değiştirilmiş değerleri orijinal çalışma kitabınıza kopyalayın.

Yardımlarınız için çok teşekkür ederim ama uzun bir süreç.
Asım,

1
Ve 700+ karakterlik bir VBA rutininin daha hızlı olduğuna inanıyor musunuz?
Scott,

1
@Scott Bu kod size sağlanmışsa olur. :)
Excellll
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.