Najlepszy sposób na usunięcie zer wiodących z wartości nienumerycznych w programie Excel


13

Mam wiele komórek w arkuszu Excel, używając 9 znaków 0-9 i AZ, które mają pewną liczbę zera:

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

Chciałbym usunąć wiodące zera, aby wartości stały się:

123 
1DA2 
9Q5
L210A
14A0
A5500
K002200

Jak miałbym to zrobić w formule Excela? Wolałbym unikać używania makra VBA.


Jeśli masz jeszcze kilka ograniczeń dotyczących danych, być może uda mi się znaleźć bardziej szczegółowe rozwiązanie.
Lance Roberts,

Dzięki. Wartości mają wiodące zera, więc razem mają 9 znaków. Poza tym wartościami są ciągi cyfr 0–9 zmieszane z wielką literą AZ. Możliwe jest, że końcowe zero istnieje i jest częścią rzeczywistej wartości i nie powinno być zmniejszane.
Chris Farmer

Mówiąc wprost, nigdy nie ma wbudowanych spacji. Tylko 0-9 i AZ.
Chris Farmer

Edytowane w celu uwzględnienia tych zerowych przykładów
Chris Farmer

@Chris, mogę to zrobić, jeśli znamy maksymalną liczbę zer, które kiedykolwiek pojawią się osadzone w ciągu lub będą się pojawiać po nim (choć będzie to długa formuła).
Lance Roberts,

Odpowiedzi:


14

Oto rozwiązanie, które wymaga dużej ilości komórek, ale jest prawidłowe.

Umieść swoje dane w kolumnie A.

W B1 wstaw formułę:

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

To sprawdza pojedyncze wiodące zero i usuwa je.

Skopiuj tę formułę po prawej stronie do tylu kolumn, ile może być znaków w danych (w tym przypadku 9, więc przejdziesz do kolumny J). Skopiuj go dla każdego wiersza danych.

Ostatnia kolumna zawiera dane pozbawione zer wiodących.


Po wielu próbach jest to jedyna wersja, która będzie działać bez uciekania się do VBA.
skamradt

Komentarz @Richard: Podoba mi się rozwiązanie Izaaka. Jeśli więcej niż jedno wiodące zero, kontynuuj kopiowanie z komórek zawierających jego formułę i wklejanie wartości tylko do oryginalnych komórek: za każdym razem usunie kolejne wiodące zero (jeśli istnieje).
Ivo Flipse,

8

Poniższa formuła nie wymaga dodatkowych komórek ani nie musi być wprowadzana jako formuła tablicowa:

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

Jeżeli dla ciągów takich jak 0lub zostanie zwrócone pojedyncze zero, można 00zastosować następujący wzór:

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

Ta odpowiedź działa z wieloma wiodącymi zerami i wydaje się być najbardziej kompletną i prostą z wymienionych tutaj odpowiedzi.
Peter,

5

Jest to trudny problem związany z funkcją arkusza roboczego. Poniższy sposób załatwi sprawę, ale tylko wtedy, gdy zera, które nie są wiodące, przychodzą tylko po jednym na raz, i nie ma zer zerowych ani spacji.

Zastępuje wszystkie zera spacjami, przycina je (wszystkie oprócz pojedynczych spacji), a następnie zastępuje zera.

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

Dlaczego tylko, jeśli zera, które nie prowadzą, przychodzi tylko jeden na raz ? A co z =CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))( CLEANCHAR
Arjan

@Arjan, przetestowałem TRIM i zastąpiło osadzone wiele spacji pojedynczą spacją, ale teraz zbadam twoje informacje i zobaczę, co mogę znaleźć. (Używam 2003).
Lance Roberts,

Funkcja CLEAN oszczędza osadzone spacje, ale także oszczędza wszystkie oprócz pierwszej wiodącej przestrzeni.
Lance Roberts,

Dodałem CLEAN, aby usunąć dodany CHAR (9); użycie CLEAN na wartości TRIMmed nie powinno mieć spacji wiodących ...?
Arjan

Tak, ale kiedy dodano CHAR (9) (do każdego zera), dodało się również do zer wiodących. Widzę, że użyłeś go tylko do zapisania końcowych zer i włączę to do odpowiedzi.
Lance Roberts,

5

To rozwiązanie działa dla wartości wejściowych, które mają dokładnie dziewięć znaków.

Najpierw skonfiguruj stałą tablicę dziesięciu wierszy, która zawiera następujące liczby sformatowane jako tekst.

000000000

000000001

000000010

000000100

000001000

000010000

000100000

001000000

010000000

100000000

Powiedzmy, że tabela jest w komórkach A1 do A10

załóżmy, że twoja wartość wejściowa znajduje się w komórce B1, a komórka wynikowa to C1

Użyj następującej formuły w komórce C1

= PRAWO (B1, MECZ (B1, 1 $ A $: 10,1 $ A $) -1)


Mądry! Jeśli chodzi o trzeci parametr w MATCHfunkcji: 1 = znajdź największą wartość mniejszą lub równą lookup_value
Arjan

4

W przypadku danych w A1 użyj następującej formuły:

= PRAWO (A1, LEN (A1) -MAX ((FINDB (REPT („0”, ROW) (A $ 1: A $ 100)), A1 i „-” i REPT („0”, 100)) = 1) * RZĄD (1 USD: 100 USD)))

wprowadzanie przez Ctrl + Shift + Enter. Działa dla ciągów o długości do 100 znaków.


Łał! Kilka drobnych uwag: Ctrl-Shift-Enter (Cmd-Shift-Return na komputerze Mac) tworzy formułę tablicową. Wklej formułę jak zwykle, ale zamiast Enter naciśnij Ctrl-Shift-Enter, aby ją zapisać. Następnie pokaże między nawiasami klamrowymi. W OpenOffice.org na komputerze Mac nie mogłem przeciągnąć formuły w dół do następnych wierszy (ponieważ wtedy dałoby to formułę super tablic). Ale kopiowanie i wklejanie działa, więc jestem pewien, że jest też jakiś skrót. A OpenOffice.org nie zna FINDB; wydaje się, że korzystanie z FIND również działa.
Arjan

Eleganckie rozwiązanie!
wilson
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.