[[20040219111058]] 『セル内の数値と文字列を分割したい』(ぱっくん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル内の数値と文字列を分割したい』(ぱっくん)
 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.