Excel에서 숫자가 아닌 값에서 선행 0을 제거하는 가장 좋은 방법


13

Excel 시트에 0-9와 AZ의 9 문자를 사용하여 많은 수의 접두사가 0 인 셀이 많이 있습니다.

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

값이되도록 선행 0을 제거하고 싶습니다.

123 
1DA2 
9Q5
L210A
14A0
A5500
K002200

Excel 수식에서 어떻게해야합니까? VBA 매크로를 사용하지 않는 것이 좋습니다.


데이터에 대한 금기 사항이 몇 가지 더 있으면 더 구체적인 솔루션을 얻을 수 있습니다.
랜스 로버츠

감사. 값은 선행 0을 가지므로 총 9 자입니다. 그 이외의 값은 대문자 AZ와 혼합 된 0-9의 문자열입니다. 후행 0이 존재할 수 있으며 실제 값의 일부이므로 트리밍해서는 안됩니다.
Chris Farmer

명시 적으로 말하면 공백이 포함되어 있지 않습니다. 단지 0-9와 AZ.
Chris Farmer

제로 예제를 포함하도록 편집
Chris Farmer

@Chris, 문자열에 포함되거나 그 뒤에 오는 최대 0 수를 알고 있으면이를 수행 할 수 있습니다 (긴 수식 임에도 불구하고).
랜스 로버츠

답변:


14

다음은 셀을 많이 사용하지만 올바른 솔루션입니다.

A 열에 데이터를 넣습니다.

B1에서 다음 공식을 입력하십시오.

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

단일 선행 0을 확인하고 제거합니다.

이 수식을 데이터에 문자가있을 수있는 열만큼 오른쪽에 복사하십시오 (이 경우 9 열이므로 J 열로 이동합니다). 각 데이터 행마다 복사하십시오.

마지막 열에는 선행 0이 제거 된 데이터가 포함됩니다.


이것에 대한 많은 시도 후에, 이것은 VBA에 의지하지 않고 작동하는 유일한 버전입니다.
skamradt

@Richard의 코멘트 : 나는 Isaac의 솔루션을 좋아한다. 선행 0이 두 개 이상인 경우 수식이 포함 된 셀에서 계속 복사하고 값을 원래 셀에만 붙여 넣습니다. 매번 다른 선행 0을 제거합니다 (있는 경우).
Ivo Flipse 2016 년

8

다음 수식은 추가 셀이 필요하지 않으며 배열 수식으로 입력하지 않아도됩니다.

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

단일 제로 같은 문자열을 반환되어야하는 경우 000, 다음의 식을 사용할 수있다 :

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

이 답변은 여러 선행 0과 함께 작동하며 여기에 언급 된 답변 중 가장 완전하고 간단한 것 같습니다.
피터

5

이것은 워크 시트 함수와 관련된 어려운 문제입니다. 다음은 트릭을 수행하지만 선행하지 않는 0이 한 번에 하나만 나오고 후행 0이없고 공백이없는 경우에만 해당됩니다.

모든 0을 공백으로 바꾸고 (단일 포함 된 공백을 제외하고) 잘라낸 다음 0을 다시 바꿉니다.

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

선행하지 않는 0이 한 번에 하나만 오는 경우에만 왜 그렇 습니까? =CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))( 어떻게 CLEAN하면 탭을 제거합니다; 그렇지 않으면;에서 다른 값을 사용하십시오 CHAR)
Arjan

@Arjan, TRIM을 테스트했으며 포함 된 여러 공간을 단일 공간으로 대체했지만 지금은 정보를 조사하고 찾을 수있는 것을 볼 것입니다. (2003을 사용하고 있습니다).
랜스 로버츠

CLEAN 함수는 포함 된 공간을 저장하지만 첫 번째 선행 공간을 제외한 모든 공간을 저장합니다.
랜스 로버츠

추가 한 CHAR (9)를 제거하기 위해 CLEAN을 추가했습니다. TRIMmed 값에 CLEAN을 사용하면 선행 공백이 없어야합니다 ...?
Arjan

예. 그러나 CHAR (9)가 추가 될 때 (각 0에), 앞에 0도 추가되었습니다. 나는 당신이 후행 0을 저장하기 위해서만 그것을 사용했고 그것을 답에 포함시킬 것입니다.
랜스 로버츠

5

이 솔루션은 정확히 9자인 입력 값에 적합합니다.

먼저 텍스트로 서식이 지정된 다음 숫자가 포함 된 고정 열 행 테이블을 설정하십시오.

000000000

000000001

000000010

000000100

000001000

000010000

000100000

001000000

010000000

100000000

표가 A10에서 A10까지의 셀에 있다고 가정 해 봅시다.

입력 값이 셀 B1에 있고 결과 셀이 C1이라고 가정 해 봅시다.

C1 셀에 다음 수식을 사용하십시오.

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


똑똑한! MATCH함수 의 세 번째 매개 변수는 1 = lookup_value보다 작거나 같은 가장 큰 값을 찾습니다
Arjan

4

A1의 데이터에는 다음 공식을 사용하십시오.

= RIGHT (A1, LEN (A1) -MAX ((FINDB (REPT ( "0", ROW (A $ 1 : A $ 100)), A1 & "-"& REPT ( "0", 100)) = 1) * ROW (A $ 1 : A $ 100)))

Ctrl + Shift + Enter로 입력합니다. 문자열은 최대 100 자까지 작동합니다.


와! 몇 가지 사소한 참고 사항 : Ctrl-Shift-Enter (Mac의 경우 Cmd-Shift-Return)는 배열 수식을 만듭니다. 평소와 같이 수식을 붙여 넣지 만 Enter 키 대신 Ctrl-Shift-Enter 키를 눌러 저장하십시오. 그런 다음 중괄호 사이에 표시됩니다. Mac의 OpenOffice.org에서 다음 행의 수식을 끌어 놓을 수 없었습니다 (그런 다음 슈퍼 배열 수식이 생성됨). 그러나 복사 및 붙여 넣기가 작동하므로 바로 가기도 있습니다. OpenOffice.org는 FINDB를 모릅니다. FIND를 사용하는 것도 효과가있는 것 같습니다.
Arjan

우아한 솔루션!
wilson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.