« 第129回 漢数字の数値化 | メイン | お知らせ »

2012年6 月 2日 (土曜日)

コメント

min

今日改めてギリギリでやってみましたが
144でした。
もう少し時間があれば短く出来そうな気もしますが、、
144{=SUM((MID(C3,FIND("万","万"&C3&"万",{2,1}),FIND("万",C3&"万")+{9,-1})=NUMBERSTRING(ROW(1:9999),1))*ROW(1:9999)*{1,10000})/10000^ISERR(FIND("万",C3))}
検証してないので間違っていたらご指摘願いますm(_ _)m

ni

139 {=MAX(ISNUMBER(FIND(TEXT(ROW(A:A),"[DBNum1]")&"万",C3))*ROW(A:A))/1%%+MAX((RIGHT(C3,COLUMN(A:G))=TEXT(ROW(1:9999),"[DBNum1]"))*ROW(1:9999))}

NUMBERSTRING って? HELPにも出てこないんですけど・・・

min

>NUMBERSTRING って? HELPにも 出てこない

一番最初に思い付いた関数ですね

からくち

>同じ関数の複数回使用禁止にしてみたら
これの式が解答例と似てる

{=SUM(IFERROR(MATCH(TRIM(MID(SUBSTITUTE(C3,"万",REPT(" ",9)),{1,11},{10,13})),NUMBERSTRING(ROW(1:9999),1),),0)*IF(COUNTIF(C3,"*万*"),{10000,1},{1,0}))}

ni

NUMBERSTRING(a1,1)=TEXT(A1,"[DBNum1]") ですね
本当はどちらも知らなかった私 orz

y sakuda

>NUMBERSTRING って? HELPにも 出てこない

こんなの初めてみたんじゃないかな?
まあ、まるで駄目でしたが、やったのだけ公開します。
166
{=SUM(((LEFT(C3,COUNT(FIND("万",C3,ROW(2:9))))=TEXT(ROW(1:9999),"[DBNum1]"))*10^4+(MID(C3,COUNT(FIND("万",C3,ROW(1:9)),),9)=TEXT(ROW(1:9999),"[DBNum1]")))*ROW(1:9999))}

気に入らない151
{=MAX((LEFT(C3,COLUMN(A:H))=TEXT(ROW(1:9999)*10^4,"[DBNum1]"))*ROW(1:9999))*10^4+MAX((RIGHT(C3,COLUMN(A:G))=TEXT(ROW(1:9999),"[DBNum1]"))*ROW(1:9999))}
(これは前半にはA:Aが使えますので145にはなります。

Left、Right,midなしの171
{=SUM(((REPLACE(C3,COUNT(FIND("万",C3,ROW(2:9)),),9,)=TEXT(ROW(1:9999),"[DBNum1]"))*10^4+(REPLACE(C3,1,COUNT(FIND("万",C3,ROW(1:9))),)=TEXT(ROW(1:9999),"[DBNum1]")))*ROW(1:9999))}

ここまでしか私のPCでは動かなかったです。
{=SUM((TEXT((ROW(1:100)-1)*10^4+TRANSPOSE(ROW(1:9999)),"[DBNum1]")=C3)*((ROW(1:100)-1)*10^4+TRANSPOSE(ROW(1:9999))))}
10000までにすると121です。

min

みなさんの回答にはついていけません。。

む印

みなさん、お付き合いいただき恐縮です。

はじまりは
"九千七百五万六千百八十三"*1しても数値化してくれなかったから^^

今回の数値化で真っ先に思いついた関数はMATCHでした
{=MMULT(MATCH(TRIM(MID(RIGHT(SUBSTITUTE("〇万"&C3&LEFT("〇",RIGHT(C3)="万"),"万",REPT(" ",15)),LEN(C3)+16),{1,16},16)),NUMBERSTRING(ROW(1:10000)-1,1),)-1,10^{4;0})}
で、からくちさんのに似てました^^;

>NUMBERSTRING って?
DATEDIFとおなじように
ロータス123との互換関数だそうです。
ほかにも色々あるみたい、、

つぎに別の方法を探してVLOOKUPとTEXT(ROW(1:9999),{"DBNum1";0})
などやってみましたが短くはならず、TRANSPOSE(ROW(1:10000))-1&ROW(1:10000)-1
でいっぺんにやろうとしましたが y sakudaさん同様、リソース不足にもなりました。


>みなさんの回答にはついていけません。。
こちらこそ短時間でここまでやっちゃうminさんにはついてゆけません、、

みなさんありがとうございました!
DBNum3の数値化も退屈しのぎになるとおもうので
お暇なときは、やってみてください。

min

む印さんの3列の配列を作るってのは、絶妙ですね。
それを活用して自分の式を改良してみましたが、
133にしかなりませんでした。

む印

>絶妙ですね。
ありがとうございます^^

>133にしかなりませんでした。
あと2文字は減らせたようおにおもいます・・・。

y sakuda

>絶妙ですね。
×2
前後に分ける(&万がない判別)を一回でやるべきとは考えたんですが、どうにもならなかったです。

min

>133にしかなりませんでした。
133{=SUM((MID(C3,FIND("万","万"&C3&"万",{2,1,1}),FIND("万",C3&"万")+{9,0,0})=NUMBERSTRING(ROW(1:9999)*10^{0,4,0},1))*ROW(1:9999)*10^{0,4,0})}
ここからどうやって減らすんだろう??

む印

>あと2文字・・・
最初に切り分けをFでするかSでするか、、
Fの方が使う関数少なくなるから短くなるか
とおもってやってみたら・・・
{=SUM((MID(C3,FIND("万",C3&"万")*{0,0,1}+1,FIND("万",C3&"万")+{0,0,7})=NUMBERSTRING(ROW(1:9999)*10^{4,0,0},1))*ROW(1:9999)*10^{4,0,0})}

min

なるほど。

min

え~と。。

min

え~と。。
2列の配列でやると、やっぱり最短にはならないのかあ??
133{=SUM((MID(C3,FIND("万",C3&"万")*{1,0}+1,FIND("万",C3&"万")+{9,-1})=NUMBERSTRING(ROW(1:9999),1))*ROW(1:9999)*10^{0,4}^COUNTIF(C3,"*万*"))}

む印

>2列の配列・・・最短にはならないのかあ??
なりました!

まとめ:128
{=SUM((TRIM(MID(SUBSTITUTE(C3,"万",REPT(" ",9)),{1,11},13))=NUMBERSTRING(ROW(1:9999),1))*ROW(1:9999)*10^COUNTIF(C3,"*万*")^{4,0})}

む印

あっ、勘違い、、、
129:
{=SUM((TRIM(MID(SUBSTITUTE(C3,"万",REPT(" ",15)),{1,16},17))=NUMBERSTRING(ROW(1:9999),1))*ROW(1:9999)*10^COUNTIF(C3,"*万*")^{4,0})}

む印

あっ、COUNTIFと^{4,0}も逆だった、、、
129:正
{=SUM((TRIM(MID(SUBSTITUTE(C3,"万",REPT(" ",15)),{1,16},17))=NUMBERSTRING(ROW(1:9999),1))*ROW(1:9999)*10^{4,0}^COUNTIF(C3,"*万*"))}

min

>2列の配列・・・最短にはならないのかあ??
>なりました!
3列の配列でも129までは行くようなので、2列と3列は引き分けなのか?
どうもSUBSTITUTEのあんな使い方は、ぱっと発想出来ないもので、、
FINDにこだわって、、

129{=SUM((MID(C3,FIND({"万",0,0},0&C3&"万"),FIND("万",C3&"万")+{9,0,0})=NUMBERSTRING(ROW(1:9999)*10^{0,4,0},1))*ROW(1:9999)*10^{0,4,0})}

む印

minさんいつもながら頑張りますねぇ~

>2列の配列・・・最短にはならないのかあ??
>なりました×2
わたしもSUBSTITUTEにこだわって、、

125{=SUM((TRIM(RIGHT(LEFT(SUBSTITUTE(C3,"万","万       "),{8,25}),8))=NUMBERSTRING(ROW(1:9999)*10^{4,0},1))*ROW(1:9999)*10^{4,0})}

※「"万       "」はスペース七つ

min

む印さん、いつもながら発想がいいですね。

3文字位へるかな?
{=SUM((TRIM(RIGHT(LEFT(SUBSTITUTE(C3,"万","0       "),{8,25}),8))=NUMBERSTRING(ROW(1:9999),1)&{0,""})*ROW(1:9999)*10^{4,0})

む印

なるほど、万を0に置き換えて
&{0,""}で判別、3文字へらせるのかっ!
納得です^^

む印

>3文字へらせるのかっ!
2文字でした、、^^;

min

ちょっと帰ってきました。
式が間違っていました。最後の「}」を忘れていたので、
2文字減って123でしたね。

む印

あと、、ヴァージョンが2003までなら、TRIMがはずせます!

117{=SUM((RIGHT(LEFT(SUBSTITUTE(C3,"万","0〇〇〇〇〇〇〇"),{8,25}),8)=NUMBERSTRING(ROW(1:9999),1)&{0,""})*ROW(1:9999)*10^{4,0})}

多分バグだったと思いますが
2003まで漢数字の"〇"は不思議な文字で
たとえば
"A〇〇B"="ab" や "二〇〇三〇"="二三"などもTRUEとなります。
 ※EXACTでは流石にFALSEです。

2007以降は修正されてましたので、
2003までのヴァージョンをお持ちの方はお試しくださいd

min

懐かしいですね
ただ、それってエクセルのバージョンの問題でしたっけ?

む印

私はてっきりヴァージョンの違いと思ってましたが、
OS、API?

min

>ヴァージョンの違いと思ってましたが、
どこかで話をしていたような気もして、、
探してみたら、
>第72回 曜日 合わせ その3 解答例
で話が出ておりましたので、、
結局よくわかりませんが。。

む印

>第72回 曜日 合わせ その3 解答例
で話が出ておりましたので、、
見てみました、、
確かに漢数字のゼロについて考察されてました、、、
どうやらOSがVISTAになってから出来なくなった感じですね

しかし、2年前くらいのことを
すっかり忘れてしまっている自分が怖い、、、

min

私なんか前回の問題すら思い出せないことが多いです。

む印

>前回の問題すら思い出せない
σ^^;おなじ、、、
ちょっと前まで人気のタレントの名前も然る事乍ら
今さっき思いついたことさえもが・・・ww

コメントの確認

コメントのプレビュー

プレビュー中です。コメントはまだ投稿されていません。

処理中...
コメントを投稿できませんでした。エラー:
コメントを投稿しました。 さらにコメントを投稿する

入力された文字と数字は画像と一致していません。再度入力してください。

最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。

画像を読み取れない場合は 別の画像を表示してください。

処理中...

コメントを投稿

アカウント情報

(名前は必須です。メールアドレスは公開されません。)

2024年8 月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

TOP メニュー