Excel'de sayısal olmayan bir değerden baştaki sıfırları kaldırmanın en iyi yolu


13

Bir Excel sayfasındaki, 0-9 ve AZ 9 karakter kullanarak, bazı önekleri sıfır olan birçok hücre var:

000000123 
000001DA2 
0000009Q5
0000L210A
0000014A0
0000A5500
00K002200

Değerlerin olması için önde gelen sıfırları kaldırmak istiyorum:

123 
1DA2 
9Q5
L210A
14A0
A5500
K002200

Bunu bir Excel formülünde nasıl yapabilirim? Bir VBA makrosu kullanmaktan kaçınmayı tercih ederim.


Verilerle ilgili birkaç kontrenderiniz varsa, daha spesifik bir çözüm bulabilirim.
Lance Roberts

Teşekkürler. Değerlerin başında sıfır vardır, böylece toplam 9 karakter olurlar. Bunun dışında, değerler A'dan Z'ye büyük harfle karıştırılmış 0-9 arası rakam dizeleridir. Sondaki sıfırın olması mümkündür ve gerçek değerin bir parçasıdır ve kesilmemelidir.
Chris Farmer

Açık olmak gerekirse, asla gömülü alanlar yoktur. Sadece 0-9 ve AZ.
Chris Farmer

İzleyen sıfır örneklerini içerecek şekilde düzenlendi
Chris Farmer

@Chris, eğer dizeye gömülü olarak görünecek veya sonra da izleyen (sıfır formülü olsa da) maksimum sıfır sayısını biliyorsanız, bunu yapabilirim.
Lance Roberts

Yanıtlar:


14

İşte hücre yoğun ama doğru bir çözüm.

Verilerinizi A sütununa yerleştirin.

B1'de formülü koyun:

=IF(
    LEFT(A1) = "0" ,
    RIGHT(A1, LEN(A1)-1),
    A1)

Bu, tek bir öndeki sıfırı kontrol eder ve çıkarır.

Bu formülü, verilerinizde olabildiğince çok sütun sağa kopyalayın (bu durumda 9, bu nedenle J sütununa gidersiniz). Her veri satırı için kopyalayın.

Son sütun önde gelen sıfırlardan arındırılmış verilerinizi içerir.


Bu konuda birçok denemeden sonra, VBA'ya başvurmadan çalışacak tek sürüm budur.
skamradt

@Richard'ın yorumu: Isaac'ın çözümünü seviyorum. Birden fazla önde gelen sıfır varsa, formülünü içeren hücrelerden kopyalamaya devam edin ve değerleri yalnızca orijinal hücrelere yapıştırın: her seferinde başka bir sıfır önde şerit varsa (varsa).
Ivo Flipse

8

Aşağıdaki formülün ek hücrelere ihtiyacı yoktur veya dizi formülü olarak girilmesi gerekmez:

=RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(A1&" ","0",""),1),A1&" ")+1)

0Veya gibi dizgiler için tek bir sıfır döndürülecekse 00, aşağıdaki formül kullanılabilir:

=IF(A1="","",RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(LEFT(A1,LEN(A1)-1)&" ","0",""),1),LEFT(A1,LEN(A1)-1)&" ")+1))

Bu cevap, birden çok önde gelen sıfır ile çalışır ve burada belirtilen cevapların en eksiksiz ve basit olduğu görülmektedir.
Peter

5

Bu, çalışma sayfası işleviyle ilgili zor bir sorundur. Aşağıdakiler işe yarayacaktır, ancak yalnızca lider olmayan sıfırlar her seferinde yalnızca bir tane gelirse ve takip eden sıfırlar ve gömülü boşluklar yoksa.

Tüm sıfırları boşluklarla değiştirir, düzeltir (gömülü tek boşluklar hariç tümü), sonra sıfırları geri alır.

=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"0"," "))," ","0")

Neden sadece lider olmayan sıfırlar birer birer gelirse ? Ve ne olacak =CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))(umarım CLEANSekmeleri kaldıracak; eğer değilse; başka bir değer kullanın CHAR)
Arjan

@Arjan, TRIM'i test ettim ve gömülü birden çok alanı tek bir alanla değiştirdi, ancak şimdi bilgilerinizi araştıracağım ve ne bulabileceğimi göreceğim. (2003 kullanıyorum).
Lance Roberts

CLEAN (TEMİZLE) işlevi gömülü boşlukları kaydeder, ancak ilk önde gelen boşluk dışında tümünü kaydeder.
Lance Roberts

Eklediğim CHAR'ı (9) kaldırmak için CLEAN ekledim; TRIMmed değerinde CLEAN kullanmanın önde gelen boşlukları olmamalıdır ...?
Arjan

Evet, ancak CHAR (9) (her sıfıra) eklendiğinde, kendisini önde gelen sıfırlara da ekledi. Sadece sondaki sıfırları kaydetmek için kullandığını görüyorum ve cevaba ekleyeceğim.
Lance Roberts

5

Bu çözüm, tam olarak dokuz karakterden oluşan giriş değerleri için çalışır.

Önce metin olarak biçimlendirilmiş aşağıdaki sayıları içeren sabit bir on satırlık tablo oluşturun.

000000000

000000001

000000010

000000100

000001000

000010000

000100000

001000000

010000000

100000000

Tablonun A1 ile A10 arasındaki hücrelerde olduğunu varsayalım

Diyelim ki giriş değeriniz B1 hücresinde ve sonuç hücreniz C1

C1 hücresinde aşağıdaki formülü kullanın

= SAĞ (B1, MATCH (B1, $ A $ 1: $ A $ 10,1) -1)


Akıllı! İşlevdeki üçüncü parametreye gelince MATCH: 1 = lookup_value değerine eşit veya daha küçük en büyük değeri bul
Arjan

4

A1'deki veriler için aşağıdaki formülü kullanın:

= SAĞ (A1, LEN (A1) -MAX ((FINDB (REPT ("0", SATIR (A $ 1: A $ 100)), A1 & "-" & REPT ("0", 100)) = 1) * SATIR (A $ 1: A $ 100)))

Ctrl + Shift + Enter tuşlarıyla giriş. 100 karaktere kadar dizeler için çalışır.


Vaov! Bazı küçük notlar: Ctrl-Shift-Enter (Mac'te Cmd-Shift-Return) bir dizi formülü oluşturur. Formülü her zamanki gibi yapıştırın, ancak Enter yerine kaydetmek için Ctrl-Shift-Enter tuşlarına basın. Daha sonra kıvırcık parantez arasında gösterilecektir. Mac'te OpenOffice.org'da, sonraki satırlar için formülü sürükleyemedim (o zaman bazı süper dizi formülü vereceği için). Ancak kopyala ve yapıştır özelliği işe yarıyor, bu yüzden eminim ki bazı kısayollar da var. Ve OpenOffice.org FINDB'yi tanımıyor; FIND kullanımı da işe yarıyor gibi görünüyor.
Arjan

Zarif çözüm!
wilson
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.