Excelシートには、0〜9およびA〜Zの9文字を使用して、いくつかのプレフィックスのゼロがあるセルが多数あります。
000000123 000001DA2 0000009Q5 0000L210A 0000014A0 0000A5500 00K002200
先行ゼロを削除して、値が次のようになるようにします。
123 1DA2 9Q5 L210A 14A0 A5500 K002200
Excelの数式でこれを行うにはどうすればよいですか?VBAマクロの使用は避けたいです。
Excelシートには、0〜9およびA〜Zの9文字を使用して、いくつかのプレフィックスのゼロがあるセルが多数あります。
000000123 000001DA2 0000009Q5 0000L210A 0000014A0 0000A5500 00K002200
先行ゼロを削除して、値が次のようになるようにします。
123 1DA2 9Q5 L210A 14A0 A5500 K002200
Excelの数式でこれを行うにはどうすればよいですか?VBAマクロの使用は避けたいです。
回答:
これは、セル集約的ですが正しいソリューションです。
列Aにデータを入力します。
B1に次の式を入力します。
=IF(
LEFT(A1) = "0" ,
RIGHT(A1, LEN(A1)-1),
A1)
これは、単一の先行ゼロをチェックし、それを取り除きます。
この数式を、データに文字が含まれる列と同じ数だけ右にコピーします(この場合は9なので、列Jに移動します)。データの行ごとにコピーします。
最後の列には、先行ゼロが取り除かれたデータが含まれています。
次の数式は、追加のセルを必要とせず、配列数式として入力する必要もありません。
=RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(A1&" ","0",""),1),A1&" ")+1)
0
または00
などの文字列に対して単一のゼロが返される場合、次の式を使用できます。
=IF(A1="","",RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(LEFT(A1,LEN(A1)-1)&" ","0",""),1),LEFT(A1,LEN(A1)-1)&" ")+1))
これは、ワークシート関数で行うのが難しい問題です。以下はトリックを行いますが、先頭にないゼロが一度に1つだけ来て、末尾のゼロも埋め込みスペースもない場合のみです。
すべてのゼロをスペースで置き換え、それらをトリミングして(埋め込まれた単一スペースを除くすべて)、ゼロに戻します。
=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"0"," "))," ","0")
=CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))
(CLEAN
タブが削除されることを期待しています。そうでない場合は、他の値を使用してくださいCHAR
)
このソリューションは、すべて正確に9文字の入力値に対して機能します。
最初に、テキストとしてフォーマットされた次の数値を含む固定10行のテーブルをセットアップします。
000000000
000000001
000000010
000000100
000001000
000010000
000100000
001000000
010000000
100000000
テーブルがセルA1からA10にあるとしましょう
入力値がセルB1にあり、結果セルがC1であるとしましょう
セルC1で次の数式を使用します
= RIGHT(B1、MATCH(B1、$ A $ 1:$ A $ 10,1)-1)
MATCH
関数の3番目のパラメーターについて:1 = lookup_value以下の最大値を検索
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文字までの文字列に対して機能します。