Hücrelerdeki Metni Değiştirin - Excel İpuçları

İçindekiler

Jean bu haftaki Excel sorusunu sordu:

Excel'deki bir tedarikçi fiyat kitabını UPC kodlarını UPC kod sistemimizle eşleştirmek için dönüştürmeye çalışıyorum. Fiyat defterlerinde Excel'de bir dizi sayı içeren bir sütun vardır, örn. 000004560007 VEYA cel000612004. Yapmam gereken şey iki kat. Hücredeki diğer 0’ları silmeden ilk üç sıfırı çıkarmam gerekiyor. Sonra, hücredeki ilk sayısal basamaktan önce 3 basamaklı bir "upc" kodu eklemem gerekiyor. Bu devam eden bir ihtiyaç olacak. Excel sistemini kullanmak için birkaç kişiyi eğitmem gerekecek.

Görünüşe göre Jean zaten üç sıfırdan kurtulmak için Düzenle-Değiştir'i kullanmayı düşünmüş. Bu işe yaramaz, çünkü "000004560007" üzerinde bir düzenleme değişikliği yapmak, 000'in her iki oluşumunun da kaybolmasına neden olur.

Öncelikle Jean'in mevcut fiyat kodlarının yanına geçici bir sütun eklemesini, dönüşümü yapmak için bir formül yazmasını, ardından formülü orijinal fiyat kodlarının üzerine geri kopyalamak için Düzenle-Kopyala, Düzen-Yapıştır-Özel-Değerleri kullanmasını önermek istiyorum.

Kötü belgelenmiş REPLACE () işlevi bu durumda işe yarayacaktır. REPLACE () uygulamasından hayal kırıklığına uğradım. Değiştirmek için belirli bir metin isteyeceğini düşünürdüm, ancak bunun yerine kullanıcıdan değiştirilecek karakter konumlarını bulmasını ister. DEĞİŞTİR, bir metin dizesinin bir bölümünü yeni bir dizeyle değiştirir. İşleve ilettiğiniz dört bağımsız değişken, eski metni içeren hücre, değiştirmek istediğiniz eski metindeki karakterin konumu, değiştirilecek karakter sayısı ve kullanılacak yeni metindir.

Benim basitleştirici varsayımım, üç sıfırın dizedeki UPC kodunun başlangıcını temsil etmesidir. Böylelikle hücrede ilk sayısal karakteri aramaya gerek yoktur. Formül üç sıfırı bulduğunda, bu üç sıfırı "upc" dizesiyle değiştirebilir.

Metinde "000" harfinin ilk geçtiği yeri bulmak için şu formülü kullanırsınız:

=FIND(A2,"000")

Jean'in B2 hücresine girmesi gereken formül şöyle olacaktır:

=REPLACE(A2,FIND("000",A2),3,"upc")

Benim düşüncem, fiyatlandırma analistlerinin bir dizi hücreyi vurgulaması ve ardından bu makroyu çalıştırmasıdır. Makro, başında "Seçimdeki her hücre için" olan bir döngü kullanır. Bu döngü ile "hücre" özel bir aralık değişkeni haline gelir. Döngüdeki geçerli hücrenin adresini, değerini veya satırını bulmak için hücre.adresi veya hücre.değer veya hücre.row'u kullanabilirsiniz. İşte makro:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

Bunun yıkıcı tipte bir makro olduğunu unutmayın. Kullanıcı bir dizi hücreyi vurguladığında ve makroyu çalıştırdığında, bu hücreler değiştirilecektir. Makronuzu gerçek üretim verilerinde serbest bırakmadan önce test verileri üzerinde iyice test etmek istediğinizi söylemeye gerek yok. Karmaşık bir formül kullanarak bir sütunu dönüştürmeniz gereken Jean gibi bir durumunuz olduğunda, burada gösterilene benzer basit bir makro yazmak etkili ve zaman kazandıran bir araç olabilir.

Ilginç makaleler...