[[20180607175506]] 『エクセル2002へ』(闘鯉王) ページの最後に飛ぶ

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

 

『エクセル2002へ』(闘鯉王)

WPS Spreadsheetsで作成したシートを名前を付けて保存で、Microsoft Excel 97-2003 ファイル(*.xls)で保存したファイルをエクセル2002で開いた所、計算式がエラーになってしまいました。
エラーになって、表示されなくなったセルの計算式は下記の通りです。

=IF(U2="1",1,IF(U2="2",2,IF(U2="3",3,IF(U2="4",4,IF(U2="5",5,IF(U2="6",6,IF(U2="7",7,IF(U2="8",8,IF(U2="9",9,IF(U2="10",10,IF(U2="11",11,IF(U2="12",12,IF(U2="13",13,IF(U2="14",14,IF(U2="15",15,IF(U2="16",16,IF(U2="17",17,IF(U2="18",18,IF(U2="19",19,IF(U2="20",20,IF(U2="21",21,IF(U2="22",22,IF(U2="23",23,IF(U2="24",24,IF(U2="25",25,IF(U2="26",26,IF(U2="27",27,IF(U2="28",28,IF(U2="29",29,IF(U2="30",30,IF(U2="31",31,IF(U2="32",32,IF(U2="33",33,IF(U2="34",34,IF(U2="35",35,IF(U2="36",36,IF(U2="37",37,IF(U2="38",38,IF(U2="39",39,IF(U2="40",40,IF(U2="41",41,IF(U2="42",42,IF(U2="43",43,IF(U2="44",44,IF(U2="45",45,IF(U2="46",46,IF(U2="47",47,IF(U2="48",48,IF(U2="49",49,IF(U2="50",50,IF(U2="51",51,IF(U2="52",52,IF(U2="53",53,IF(U2="54",54,IF(U2="55",55,IF(U2="56",56,IF(U2="57",57,IF(U2="58",58,IF(U2="59",59,IF(U2="60",60,"範囲外"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

独学で少しずつ作ったのですが、このような複雑な数値の時だけ反映させる方法が私の実力ではできませんでした。どうしたら良いのか教えて頂けると助かります(*・ω・)*_ _)ペコリ

< 使用 Excel:Excel2002、使用 OS:Windows10 >


=If(U2>60,"範囲外",U2)

と同じじゃないっすか?

(まっつわん) 2018/06/07(木) 18:41


概ねまっつわんさんの仰るとおりだとおもうのですが、わざわざIF関数をネストして文字列として判定してるのがちょこっと気になります。実際のところU2には何が入ってるんですか? 数字(文字)なのか数値なのか・・・

まあ、数字(文字)を数値に直すだけだったら 1を掛ければいいんでしょうけど・・・・
(もこな2) 2018/06/07(木) 18:49


ご返信ありがとうございます。
U2には下記の計算式が入ってます。
=MID(Q2,SEARCH("-",Q2,1)+1,SEARCH("-",Q2,SEARCH("-",Q2,1)+1)-(SEARCH("-",Q2,1)+1))

住所番地を?−?−?って入力した時に、その住所の番地で種類分けしてたんです。
町名によっても違いますし、このやり方しか、私には出来なかったもので^^;
(闘鯉王) 2018/06/08(金) 00:13


 >住所番地を?−?−?って入力した時に、その住所の番地で種類分けしてたんです。 
 >町名によっても違いますし、このやり方しか、私には出来なかったもので^^;

 と言うことは、実際はもっと長い数式ってことですね?

 番号も実際は数値じゃなく「範囲の種類」を表しているんですね?

 それにしても「町名による分岐条件」がどこにも書かれていないですね。

 もう少し、実際に近い数式を提示して貰えませんか?
 ただし、60も要らないので、10以内で実際の数式が推測できるものにしてください。

(半平太) 2018/06/08(金) 10:50


>住所番地を?−?−?って入力した時に、その住所の番地で種類分けしてたんです。

ごめんなさい。私にはちょっと意味がよく解りませんでした。
U2の数式どおりだと、海山町1-22-3 ってQ2に入ってたら 22という数字(文字が)返ってきますよね。
この文字を数値として見たときに、1〜60の範囲内であれば数値を、そうでなければ「範囲外」という文字を返したいってことでいいんでしょうか?

単純に住居表示なのか、地番表示なのか分けたいってことなら別のアプローチになりそうだし、う〜ん・・・力及ばず申し訳ない。

(もこな2) 2018/06/08(金) 12:58


ご返答ありがとうございます。
先ず、町名が全部で3種類あります。ひとつの町名には〇丁目が1個でもう一つの丁目は1〜4、最後の丁目は1〜3分かれ、更に番地でも細かく分類されます。地図で分けた一定のエリアを6エリアに分けてあり、その6エリアに分けたエリアを、住所を入力した際にエリアナンバーを表示させたいといった計算式です。
たとえば、幸福町1丁目の1〜15番地はエリア1、16番地〜18番地はエリア2、19〜39番地はエリア1と言ったような条件になってます。
MID関数で抜き出した文字列を別のセルで数値に変換してます。

=IF(U2="1",1,IF(U2="2",2,IF(U2="3",3,IF(U2="4",4,IF(U2="5",5,IF(U2="6",6,IF(U2="7",7,IF(U2="8",8,IF(U2="9",9,IF(U2="10",10,IF(U2="11",11,IF(U2="12",12,IF(U2="13",13,IF(U2="14",14,IF(U2="15",15,IF(U2="16",16,IF(U2="17",17,IF(U2="18",18,IF(U2="19",19,IF(U2="20",20,IF(U2="21",21,IF(U2="22",22,IF(U2="23",23,IF(U2="24",24,IF(U2="25",25,IF(U2="26",26,IF(U2="27",27,IF(U2="28",28,IF(U2="29",29,IF(U2="30",30,IF(U2="31",31,IF(U2="32",32,IF(U2="33",33,IF(U2="34",34,IF(U2="35",35,IF(U2="36",36,IF(U2="37",37,IF(U2="38",38,IF(U2="39",39,IF(U2="40",40,IF(U2="41",41,IF(U2="42",42,IF(U2="43",43,IF(U2="44",44,IF(U2="45",45,IF(U2="46",46,IF(U2="47",47,IF(U2="48",48,IF(U2="49",49,IF(U2="50",50,IF(U2="51",51,IF(U2="52",52,IF(U2="53",53,IF(U2="54",54,IF(U2="55",55,IF(U2="56",56,IF(U2="57",57,IF(U2="58",58,IF(U2="59",59,IF(U2="60",60,"範囲外"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

とX列で再変換させてますので、前出の数式が入ってます。
説明不足で申し訳ありません。
他にどんなことを説明したら、理解して頂けるか書いて頂けると助かります。

(闘鯉王) 2018/06/09(土) 02:01


>とX列で再変換させてますので、前出の数式が入ってます。
んっと・・
その数式を見た感じ、特にX列を参照しているように見えません。

私の理解だと
 【Q2】    【U2】  【問題の数式の結果】            
海山町1-22-3   "22"     22
山川市4-61-5   "61"    "範囲外"
川海村沼山6789  #VALUE!  #VALUE!

ってなりそうなんですが、この動きで想定通りなんですか?
もしそうなら、
=If(U2*1>60,"範囲外",U2*1) で解決するような気がします。

(もこな2) 2018/06/09(土) 07:16


 >MID関数で抜き出した文字列を別のセルで数値に変換してます。

 =MID(Q2,SEARCH("-",Q2,1)+1,SEARCH("-",Q2,SEARCH("-",Q2,1)+1)-(SEARCH("-",Q2,1)+1))*1
                                                                                  ~~~
                                                                                   ↑
「1」を掛ければ数値になりますけど、それではダメなんですか?

 参考まで
(笑) 2018/06/09(土) 09:56

あぁなるほど。X列を参照してるんじゃなくて、そこに問題の数式をいれてるのか・・・・なっとく。

ちなみに、別部分ではありますが、1を掛けることは提案済みです(質問者さんからのレスは無いですが)
(もこな2) 2018/06/09(土) 16:38


先ず、A2のセルに
=IF(OR(B2="1エリア",C2="1エリア",D2="1エリア",),$Z$1,IF(OR(E2="2エリア",F2="2エリア"),$AA$1,IF(OR(G2="3エリア",H2="3エリア",I2="3エリア",J2="3エリア"),$AB$1,IF(OR(K2="4エリア",L2="4エリア",M2="4エリア"),$AC$1,IF(OR(N2="5エリア"),$AD$1,IF(OR(O2="6エリア"),$AE$1,""))))))
B2のセルに= IF(P2="東町",$Z$1,$AF$1)
C2のセルに= IF(P2="山町",IF(V2=1,IF(AND(W2>=42,W2<=45),$Z$1,$AF$1),$AF$1),$AF$1)
D2のセルに= IF(P2="南町",IF(V2=1,IF(AND(W2>=1,W2<=15),$Z$1,IF(AND(W2>=19,W2<=39),$Z$1,IF(AND(W2>=42,W2<=44),$Z$1,IF(AND(W2>=52,W2<=53),$Z$1,$AF$1)))),$AF$1),$AF$1)
E2のセルに= IF(P2="南町",IF(V2=1,IF(AND(W2>=16,W2<=18),$AA$1,IF(AND(W2>=40,W2<=41),$AA$1,IF(AND(W2>=45,W2<=51),$AA$1,IF(AND(W2>=54,W2<=60),$AA$1,$AF$1)))),$AF$1),$AF$1)
F2のセルに= IF(P2="南町",IF(V2=2,IF(AND(W2>=1,W2<=26),$AA$1,$AF$1),$AF$1),$AF$1)
G2のセルに= IF(P2="南町",IF(V2=2,IF(AND(W2>=27,W2<=31),$AB$1,$AF$1),$AF$1),$AF$1)
H2のセルに= IF(P2="南町",IF(V2=3,IF(AND(W2>=1,W2<=25),$AB$1,$AF$1),$AF$1),$AF$1)
I2のセルに= IF(P2="山町",IF(V2=2,IF((W2=32),$AB$1,IF(AND(W2>=37,W2<=42),$AB$1,$AF$1)),$AF$1),$AF$1)
J2のセルに =IF(P2="山町",IF(V2=4,IF(AND(W2>=11,W2<=15),$AB$1,$AF$1),$AF$1),$AF$1)
K2のセルに =IF(P2="山町",IF(V2=2,IF(AND(W2>=30,W2<=31),$AC$1,$AF$1),$AF$1),$AF$1)
L2のセルに =IF(P2="山町",IF(V2=3,IF(AND(W2>=24,W2<=42),$AC$1,$AF$1),$AF$1),$AF$1)
M2のセルに =IF(P2="山町",IF(V2=4,IF(AND(W2>=1,W2<=10),$AC$1,IF(AND(W2>=16,W2<=33),$AC$1,$AF$1)),$AF$1),$AF$1)
N2のセルに =IF(P2="山町",IF(V2=2,IF(AND(W2>=1,W2<=29),$AD$1,IF(AND(W2>=33,W2<=36),$AD$1,$AF$1)),$AF$1),$AF$1)
O2のセルに =IF(P2="山町",IF(V2=1,IF(AND(W2>=1,W2<=41),$AE$1,$AF$1),$AF$1),$AF$1)

P2に住所1(町名を入力するよう)にしてあり、Q2に住所2(住所番地?−?−?と入力するように)してあり、住所3に建物名を入力するようにしてます。S2に備考みたいに予備として1つセルを確保してまして、T2に=MID(Q2,1,1)を入れてます。

U2に =MID(Q2,SEARCH("-",Q2,1)+1,SEARCH("-",Q2,SEARCH("-",Q2,1)+1)-(SEARCH("-",Q2,1)+1))
V2に =IF(T2="4",4,IF(T2="3",3,IF(T2="2",2,IF(T2="1",1))))
W2に =IF(U2="1",1,IF(U2="2",2,IF(U2="3",3,IF(U2="4",4,IF(U2="5",5,IF(U2="6",6,IF(U2="7",7,IF(U2="8",8,IF(U2="9",9,IF(U2="10",10,IF(U2="11",11,IF(U2="12",12,IF(U2="13",13,IF(U2="14",14,IF(U2="15",15,IF(U2="16",16,IF(U2="17",17,IF(U2="18",18,IF(U2="19",19,IF(U2="20",20,IF(U2="21",21,IF(U2="22",22,IF(U2="23",23,IF(U2="24",24,IF(U2="25",25,IF(U2="26",26,IF(U2="27",27,IF(U2="28",28,IF(U2="29",29,IF(U2="30",30,IF(U2="31",31,IF(U2="32",32,IF(U2="33",33,IF(U2="34",34,IF(U2="35",35,IF(U2="36",36,IF(U2="37",37,IF(U2="38",38,IF(U2="39",39,IF(U2="40",40,IF(U2="41",41,IF(U2="42",42,IF(U2="43",43,IF(U2="44",44,IF(U2="45",45,IF(U2="46",46,IF(U2="47",47,IF(U2="48",48,IF(U2="49",49,IF(U2="50",50,IF(U2="51",51,IF(U2="52",52,IF(U2="53",53,IF(U2="54",54,IF(U2="55",55,IF(U2="56",56,IF(U2="57",57,IF(U2="58",58,IF(U2="59",59,IF(U2="60",60,"範囲外"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
X2に =MID(Q2,SEARCH("-",Q2,3)+1,SEARCH("-",Q2,SEARCH("-",Q2,1)+1)-(SEARCH("-",Q2,1)+1))
と入力してます。
私の実力ではこの作成でやっと到達出来たのですが、MID関数に×1を入れると数値に換算されるのを知りませんでした。
他に無駄とかあれば教えて頂けると、また書き直せるかもしれません。
色々ご教授お願いいたします(*・ω・)*_ _)ペコリ

(闘鯉王) 2018/06/15(金) 10:09


対策としては、エクセルのヴァージョンアップしかありませんでしょうか?
(闘鯉王) 2018/06/21(木) 22:07

う〜ん。私には数式だけずらずら並べられても状況がつかめないので、こういう値のときは、こういう結果になってほしい。ってのをサンプル提示してもらったほうが、アドバイスできることがあるかもです。

バージョンアップについては、2002が古いといえば古いので、バージョンアップする気があるならした方がいいんでしょうけど、#NAME?って出てるので無ければ関数自体は2002でも使えるものってことになりますから、バージョンアップしたら、希望通りの動作になりますっってわけじゃないとおもいますよ。
(数式を適切なものに直さなきゃ、エラーはエラーのままです)
(もこな2) 2018/06/21(木) 22:34


 単純にネストの問題なので、半分づつにしてみては?
 1〜100までだったら、1〜50、51〜100 に分け、
 さらに1〜25、26〜50、51〜75、76〜100 まで、さらに続く。
 7の何乗だか知らん分のIf文が書けるようになるようです。

 対応表を作って、Vlookupで参照した方が簡単だと思います。
(BJ) 2018/06/21(木) 23:34

コメント返信:

[ 一覧(最新更新順) ]


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