[[20040213163030]] 『表示形式・単位をつけたいが』(nana7) ページの最後に飛ぶ

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

 

『表示形式・単位をつけたいが』(nana7)
 下記のような表示形式にする方法を教えてください

      A        B     

1     22D      =IF(A1="","",A1)

   B2は「22.0D台」となるようにしたい。

 表示形式 〜 ユーザー定義 で

 0.0"D台"

 だと思うんですが。 ユーザー定義、詳しくないです。   (jun53)

 ご希望がよく理解できませんので、とりあえず、   (LOOKUP)
 =IF(RIGHT(A1)<>"D","",TEXT(LEFT(A1,LEN(A1)-1),"0.0!"&RIGHT(A1)&"台"))


 ごめんなさい。

      A  ・・・・・      G     

1     22D            =IF(A1="","",A1)

2     13

   G1は計算結果が「22.0D台」となるようにしたい。
   G2は     「13.0台」など

 Aのデータはランダムです。
 22D
 13
 34G    などなど
 それで 数字と文字が混ざった答えのときも台が付くようにしたいんです。(nana7)

 数字は二桁、文字は1文字限定ですが、
 =IF(A1="","",TEXT(LEFT(A1,2),"0.0")&IF(LEN(A1)=2,"",RIGHT(A1,1))&"台")
ではどうでしょう。
>kwがつくように・・・ というのが判りませんでした。
                        (kobi) 

 kWは間違いです。すみませ〜ん(^^ゞ(nana7)

 文字が混ざる場合は、1文字だけとして考えました。(2文字・3文字…もあるんですか?)
=IF(A1="","",IF(ISERROR(A1/1),TEXT(LEFT(A1,LEN(A1)-1),"0.0")&RIGHT(A1,1),TEXT(A1,"0.0"))&"台")
 頭に文字が来るとアウトですが・・・  (sin)

 まだ、ご希望が、理解できませんが、このようなことでは、どうでしょう?

 =IF(A1="","",
 IF(ISNA(LOOKUP(10^16,-LEFT(A1,ROW($1:$20)))),A1,
 REPLACE(A1,1+LEN(LOOKUP(10^16,--LEFT(A1,ROW($1:$20)))),,".0")&"台"))

 1 -123D   -123.0D台
 2 123    123.0台
 3 123ABC  123.0ABC台
 4 A0AA   A0AA
 5 ABC    ABC              (LOOKUP)

 nana7さん、失礼します。
LOOKUPさん、いつも眺めながら敬服しております。
毎度毎度申し訳ありませんが、数式の解説お願いしていいですか?
特に=LOOKUP(以降 ・・・、それと ROW($1:$20) ・・・-LEFT() あと・・・全体か?
        凄すぎることだけは理解した (kobi)

 nana7さんのご希望がはっきりしないうちに、数式の解説というのも変なのですが、
 ご要望がありますので、簡単に説明させていただきます。

 =IF(A1="","",
 IF(ISNA(LOOKUP(10^16,-LEFT(A1,ROW($1:$20)))),A1,
 REPLACE(A1,1+LEN(LOOKUP(10^16,--LEFT(A1,ROW($1:$20)))),,".0")&"台"))

 これは、A1に左から数値が入力していて、この数値の後に文字列などが接続している
 場合は、数値の後ろに.0を加え、文字列の最後に台を付加する。
 A1の左から直ぐ数値が配置していない場合には、変換せずA1をそのまま、戻す。
 という意図で、試作されています。

 この数式の主部は、
 REPLACE(A1,1+LEN(LOOKUP(10^16,--LEFT(A1,ROW($1:$20)))),,".0")&"台"の部分です。

 1.REPLACE(A1,1+LEN(数値の部分),,".0")&"台"
   ここは、A1の中で、1+LEN(A1の数値の部分)の桁数の位置に".0"を挿入して、
   さらに後ろに"台"を付加しています。

 2.数値の部分のLOOKUP(10^16,--LEFT(A1,ROW($1:$20)))は、
   LEFT(A1,{1;2;3;……;18;19;20})の部分で、A1の左から1桁から20桁までの
   文字列の配列を作成し、--として、数値に変換させています。

 A1に-123Dの場合ですと、
 ={#VALUE!;-1;-12;-123;#VALUE!;#VALUE!…以下すべて同様 ということになります。
 LOOKUP(10^16,配列)としていますので、配列の#VALUE!を除く一番奥の数値が戻ります。
 この場合は、-123です。

 =LOOKUP()は、=SUMPRODUCTと同様、配列を扱う関数ですので、 Enterの替わりに
 Ctrl+Shift+Enterとする必要は、ありません。

 数式の頭の=IF(A1="","",は、当該セルが空白の場合は、以下の処理に入らない、

 次のIF(ISNA(LOOKUP(10^16,-LEFT(A1,ROW($1:$20)))),A1,は、A1の左から数値が配置して
 いない場合には、配列内に数値がないことになりますので、 
 LOOKUP(10^16,-LEFT(A1,ROW($1:$20)))は、#N/A!を戻し、これをチェックすることで、
 主部の計算には、入らないように しています。

 -LEFT(…と-が1個しかないのは、数値自体は、使用しないので 少しでも処理を軽減しようと
 しています。

 このようなことなのですが。。                 (LOOKUP)

 そうでした、割り込み失礼しました。。
nana7さん、LOOKUPさん、どうもありがとうございました。  (kobi)


 みなさんありがとうございます^^
 英語が複数だったり先頭が文字だったりすることはないんです。
 kobiさんの最初の方法でいけそうです。他にもたくさん・・・どうもありがとうございました^^。すごい勉強になりました。(nana7)

    


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.