[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル内の数値と文字列を分割したい』(ぱっくん)
1セルの中に入っている「10.0KG」とか「1000set」を 「10.0KG」⇒「10.0」「KG」 「1000set」⇒「1000」「set」 に関数で分割したいのですが、右から数値位置見つけて 分割するようなことは関数で可能でしょうか?
分割する対象となる単位(?)がある程度決まっていて、 一列にずらーーっっと並んでいるのであれば、 置換で「KG」→「,KG」などに変換して「区切り位置」で 2列に分けてしまうのが簡単ですが、この方法はレイアウト次第でしょう。 (KAMIYA)
A1が当該セルだとしますと、 B1に =IF(COUNT(-LEFT(A1,ROW($1:$20))), LEFT(A1,LOOKUP(10^16,-LEFT(A1,ROW($1:$20)),ROW($1:$20))),"") として、Ctrl+Shift+Enter。 C1に =SUBSTITUTE(A1,B1,)
ということでは、どうでしょう? (LOOKUP)
A B C 1 10.0KG 10.0 KG 2 1,000SET 1,000 SET 3 AAA AAA
早速の回答ありがとうございます。 すごいですね!感動しています。 でも何でできたのか、さっぱりわかりません。 勉強不足を痛感します。 できれば、簡単に仕組みを教えていただければ幸いです。 (ぱっくん)
こちらでLOOKUPさんの解説があります。 ご参考までに。(すごい) [[20040213163030]]『表示形式・単位をつけたいが』(nana7) (KAMIYA)
1)セル内の値(10.0KGなど)の文字を左から一個づつ調べ、A-Zのアスキーキーコード
と、それ以外で分類して、それぞれ文字を連結する。 2) 出来たA-Z郡はそのセルの隣の隣に記載する。 それ以外の郡は隣に記載する。 3) 各セルで繰り返す。
(なお)
=IF(COUNT(-LEFT(A1,ROW($1:$20))), LEFT(A1,LOOKUP(10^16,-LEFT(A1,ROW($1:$20)),ROW($1:$20))),"") Ctrl+Shift+Enter。
この数式をA1を10.0KGとして、説明させていただきます。
前処理 =IF(COUNT(-LEFT(A1,ROW($1:$20))), 主部,"")
主部 LEFT(A1,LOOKUP(10^16,-LEFT(A1,ROW($1:$20)),ROW($1:$20)))
前処理 の 1-1 =IF( 2-1 COUNT( 3-0 -LEFT(A1,ROW($1:$20)) 2-2 ), 1-2 主部,"")
3-0は、10.0KGをLEFT()で、ROW($1:$20)の配列で、左から1桁、2桁、……、20桁 を抽出し、算術演算子-を付け、数値に変換できるかどうか調べています。
-1、-10、-10.、-10.0、-10.0K、-10.0KGとなり、頭から4個だけ数字に変換できます。 -LEFT()の配列は、 {-1;-10;-10;-10;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!; #VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!} となりますので、COUNT(配列)は、4(TRUE)を戻し、主部の処理に入ります。
主部 の 4-1 LEFT(A1, 5-1 LOOKUP(10^16, 5-2 -LEFT(A1,ROW($1:$20)), 5-3 ROW($1:$20)) 4-2 )
5-1-2-3は、前述の配列5-2の-LEFT(A1,ROW($1:$20))の数値の一番奥の最長のものを LOOKUP()の第一引数(最大値10^16)で検索し、これは、第4番目ですので、 第三引数5-3のROW($1:$20)の配列の4番目で、4を戻します。 4-1-2は、LEFT(A1,4)ということで、10.0を戻します。
対象セルの値を左1桁、1+2桁と順に数値に変換できるか調べて、その最長の桁のものを 戻しています。したがって、セル値は、全角、半角を問わず、-や,区切り%なども抽出の 対象となります。1,123.5%ポイントや、2月20日付なども抽出可能です。
このような意図で試作しています。 (LOOKUP)
わかりました! しかし芸術の域に達していますね。 ありがとうございました。 ⇒ (LOOKUP)様 (ぱっくん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.