『表示がおかしい関数があります』(shota) AA1367に富山県外山町愛上市柿間町11-25と入力してます。 ところが1番と3番は「富山県」と表示するんですが2番は3と表示します。 2番の式のどこが悪いのでしょうか。 1番 =LEFT(AA1367,FIND("県",AA1367,1)) 2番 =IF(ISERROR(FIND("県",LEFT(AA1367,4),1)),3,FIND("県",AA1367,1)) 3番 =LEFT(AA1367,IF(ISERROR(FIND("県",LEFT(AA1367,3),1)),3,FIND("県",AA1367,1))) よろしくご指導くださいますようお願いいたします。 Excel2002 WindowsXP ---- ではその前に質問します。 2番の式 =IF(ISERROR(FIND("県",LEFT(AA1367,4),1)),3,FIND("県",AA1367,1)) で、成り立っているのは 3 ですか?それとも FIND("県",AA1367,1) ですか? (ramrun) ---- あちゃ〜! 親分と衝突〜☆ 以下衝突前文章! レスが付かないようなので、shotaさんにヒントだけ!   計算式が入っているセルにカーソルを置いて ツール → ワークシート分析 → 数式の検証 そうすると【評価】ボタンがありますので、押していってみてください。 数式が一つひとつ、解かれていきます。 それを見ながらヘルプで追いかけるとわかりやすいかもしれませんよ〜♪   (キリキ)(〃⌒o⌒)b ---- ramrun様 キリキ様 ありがとうございます。 お二人のいっている意味がまったくわかりません。 まあ、見る人が見れば分かるでしょう。 結局2番は削除しました。 1番と3番があれば何とかなるでしょう。 どうもありがとうございました。 今後ともなにとぞご指導くださいますよう、どうか宜しくお願いいたします。 (shota) ---- >お二人のいっている意味がまったくわかりません。 >まあ、見る人が見れば分かるでしょう。 こういう発言は書き込んでくれた方に失礼ですよ。 >結局2番は削除しました。 >1番と3番があれば何とかなるでしょう。 shotaさんは、結局何のために書き込みしたのでしょうか? (やっちん) ---- またまた衝突☆ う〜ん。。。 そうじゃないんですよぬ… まず、ramrunさんの質問に対する回答は? 何がわかって何が分からないの? σ(^o^;)の言った「数式の検証」はしました? した結果、何がわかって何が分からないの? 掲示板だから、言葉のキャッチボールをしないと何も始まりませんし、レスしてくれた方々に失礼になると思いませんか? (キリキ)(〃⌒o⌒)b ---- まぁまぁ。 shotaさん、難しく考えすぎじゃないですか? IF文を理論式・真の場合・偽の場合と分割したら理由は簡単じゃないですか? =IF(  理論式 ISERROR(FIND("県",LEFT(AA1367,4),1))  真の場合 ,3  偽の場合 ,FIND("県",AA1367,1) ) ですからね。 変な事だらけでしょ。 (kenbou) ---- 2番の回答ではないですが 3番は >=LEFT(AA1367,IF(ISERROR(FIND("県",LEFT(AA1367,3),1)),3,FIND("県",AA1367,1))) =LEFT(AA1367,IF(ISERROR(FIND("県",LEFT(AA1367,4),1)),3,FIND("県",AA1367,1))) ~ の間違いでは? 都道府県名を取り出すものでしょうから、例えば「神奈川県」や「鹿児島県」では 「県」が外れてしまいます。 2番ではちゃんと4だったのに。 (やっちん) ---- 皆様ありがとうございます。 今までかかってやっと整理がつきました。 私の能力では思考力も無いしただ皆様が教えてくださったことをエクセルファイルにまとめるのが精一杯でございます。 その成果がだんだんと積もり、今では「最初に」というファイルと15個の圧縮フォルダの中に50個のファイルがあります。 これすべていろんなところから集めたものです。 大体一つのファイルはフロッピーに入る大きさにしております。 この資料を使ってほかの人がエクセルを勉強してもらえたらいいなと思っております。 ホームページの中のブリーフケースに入れて誰でも取れるようにしております。 だからこそいい物を作りたいんです。 46歳で脳梗塞となり右半身不随となりおまけに普通なら麻痺するはずなのに痛みだけは感じる身体になってしまったんです。 痛み止めの薬と座薬で何とかしのいではいますが、 思考力なんか吹っ飛んでいくような痛みなんです。 でもエクセルに出会えて夢中になっています。 今後ともなにとぞご指導くださいますよう、どうか宜しくお願いいたします。 (shota) ---- shotaさん 発言には気をつけようよね。 脳梗塞云々は良くないよ。 みんな人生いろんな痛みに耐えながら生きているもんですよ。 あなたの関係する過去ログを全部読みましたよ。 あなたは甘えがあるようですね。 勉強の部屋ということを心に刻み込んでから発言しなさいね。 それから皆さんにも一言。 どうも相手を見て回答を出しておられる方が多いみたいですね。 もっと心を大きく持って相手を見ることなく誰にでも回答してあげたらどうですか。 通りすがりより ---- >どうも相手を見て回答を出しておられる方が多いみたいですね。 >もっと心を大きく持って相手を見ることなく誰にでも回答してあげたらどうですか。 何を指してそういっているのかわかりませんが、何か勘違いしてないですか? そういうものを望むのであればお金を出しましょうね。  どうしてもというなら、あなたがやってください。 たしかに、脳梗塞云々はよくないとは思いますけどね。 何が言いたいのかよくわからないし。 (アカギ) ---- 分かるならとっくに教えてますよ。 アカギさんもちょっと無神経ですね。 分からない人には区別することなく教えてあげたらどうですか。 通り過ぎより ---- やっちんさん一つ勉強になりました。 3と4の意味がわかりました。どうもありがとうございました。 でもどうしても分かりません。 AA1367に富山県外山町愛上市柿間町11-25と入力してます。 ところが1番と3番は「富山県」と表示するんですが2番は3と表示します。 2番の式のどこが悪いのでしょうか。 1番 =LEFT(AA1367,FIND("県",AA1367,1)) 2番 =IF(ISERROR(FIND("県",LEFT(AA1367,4),1)),3,FIND("県",AA1367,1)) 3番 =LEFT(AA1367,IF(ISERROR(FIND("県",LEFT(AA1367,3),1)),3,FIND("県",AA1367,1))) 2番のどこがいけないんでしょうか。 考えられることはすべてやりました。 完全にお手上げです。 教えてください。 それから通り過ぎさんとアカギさん 喧嘩はしないでくださいね。 (shota) ---- 探りのために最初の質問をさせていただきましたが、 どうやらそれが、いまのshotaさんのレベルということになります。 もうひとつ質問に答えてください。 『もし10ならば20、そうでなければ30』 この場合、返ってくる数値は20ですか? それとも30ですか? またその値が返ってくる理由も答えてください。 それがわからなければ2番は到底解けません。 この質問の意味のわからないとこがあれば、 それを質問してください。 >相手を見て回答を出しておられる方が多い 皆さん質問の内容を見て回答しているんですよ。 誰だって自分の得意、不得意があるでしょ。 ことshotaさんについては、たしかに『相手を見て回答をだす』ですね。 この先に待つのは間違いなく『無視』ですから。 (ramrun)今日一日仕事で離れられないので、どなたか対応よろしこ。 ---- shotaさんが示されている1、2番の数式は、3番を導き出すために提示されたものでは ありませんか? 1番で、県名を取り出すには、こういった式で取り出します 2番で、でも東京都、大阪府、京都府、北海道は県ではないので、こういった場合には     3文字、それ以外は県までの文字数を求めましょう。 3番で、1番の式に2番の式をネストしましょう こんな感じでしょう? だから、1番、3番は文字が切り出されて当然です。 2番は文字数を求めているのだから、数字で当たり前です。 どこかのQ&Aから持ってきたのでしょうね。 (ROUGE) ---- 「県」を含む住所から県名を取り出すのなら、2番目と3番目はともに間違いでは? (A)=LEFT(A1,FIND("県",A1,1)) (B)=LEFT(A1,IF(ISERROR(FIND("県",LEFT(A1,4),1)),3,FIND("県",A1,1))) (C)=LEFT(A1,IF(ISERROR(FIND("県",LEFT(A1,3),1)),4,FIND("県",A1,1))) と3通りの解き方があるというのを示したいのではないですか? 「都道府県」を含む住所からなら、 =IF(MID(A1,4,1)="県",LEFT(A1,4),LEFT(A1,3)) といった感じでしょうか? # 参照セルはA1にしていますので、適切なのに修正してください。 (追加) (B)なら、都道府県名も取り出せますね・・・やっちんさんが既に書かれていました(^^ゞ =LEFT(A1,(MID(A1,4,1)="県")+3) のようなのでもいいかも・・・ (更に追加) 最初に提示された3つの数式が、どういう意図の下に作成されたものか明確でない。 それぞれの数式に対して、どのような値が返ることを期待しているのか書かれていない。 というのが、マズイ・・・と思うのですが、質問者さんどうでしょう?    (Hatch) ---- >2番のどこがいけないんでしょうか。 2番と3番の式をちょっとずらして見比べてください。 2番 = IF(ISERROR(FIND("県",LEFT(AA1367,4),1)),3,FIND("県",AA1367,1)) 3番 =LEFT(AA1367,IF(ISERROR(FIND("県",LEFT(AA1367,3),1)),3,FIND("県",AA1367,1))) ~ 私が前に書いたように3番の式の3を4に代えると、 2番の式は完全に3番の式に含まれているのがわかります。 3番の式の中で2番の式と同じ部分は何かわかりますか? ちょっと書き換えると 3番 =LEFT(AA1367,2番の式) です。 2番の式は、LEFT関数で取り出す文字数になっています。 つまり2番の式の結果は、数値になる必要があるということです。 2番の式でも都道府県名を取り出すように修正したいというのであれば 結局は3番の式になります。2番の式は3番の式の部品でしかありませんから。 (やっちん) ---- 横から失礼します。 面白そうな質問内容だったので、自分なりに検証してみました。 以下の3パターンの例をまずshotaさん御提示の式に当てはめてみました。 例1)富山県外山町愛上市柿間町11-25 1番:富山県 2番:3 3番:富山県 例2)東京都中央区日本橋蛎殻町1-1-1 1番:#VALUE! 2番:3 3番:東京都 例3)鹿児島県指宿市岩本1-1 1番:鹿児島県 2番:4 3番:鹿児島 ROUGEさんが御指摘のように、1番目、2番目の式で検証し、その結果として複合型の3番目の式が誕生したのでしょう。 3番目の式では、例3の場合に「県」が抜けてしまうので、国内で最も都道府県名の長いものを想定し、 例3を以下の形に変形した方が良いと思います。 =LEFT(A1,IF(ISERROR(FIND("県",LEFT(A1,3),1)),4,FIND("県",A1,1))) 結論としては1,2番目の式は不要ですが、3番目の式を導き出す為の過程という意味では必要なのだと思います。 レスを順に見ましたが、どうやらshotaさんは何も考えずに、どこかのサイトからそのままコピーし、 式を何も理解せず、検証もしない状態で「判らない」と大騒ぎして、 ここの質問に丸投げしたような雰囲気を感じました。 shotaさんには以下の2つが決定的に欠けているような気が、私には感じました。 @どういう検証をして出来なかったのか? A一体どういった結果を得たかったのか? >私の能力では思考力も(以下略) shotaさんのこうした身の上話は他の人にはどうでも良い事ですし、理由にもなりません。 長々と書き込む余裕があるようでしたら、上記@、Aを丁寧に書き込む事の方が重要だと思います。 (HT) ---- HTさんへ =LEFT(A1,IF(ISERROR(FIND("県",LEFT(A1,3),1)),4,FIND("県",A1,1))) 県以外ではおかしくなると思いますよ。 東京都、北海道、大阪府、京都府、県以外は全部3文字です。 (やっちん) ---- やっちん様へ 鹿児島県、和歌山県の場合、4文字になります。また東京都、北海道、大阪府、 京都府も試してみましたが、都道府県が付いた形で返されるのを検証しています。 質問者の意図が見えてこないので、なんとも言えませんが、上述の式で特に問題ないと思いますが。。。 (HT) ---- HTさんが例に出されている次の住所ではどうなりますか? > 例2)東京都中央区日本橋蛎殻町1-1-1 (やっちん) ---- やっちん様、失礼しました。 以下の式の誤りでした。これなら大丈夫です。 =LEFT(G1,IF(ISERROR(FIND("県",LEFT(G1,4),1)),3,FIND("県",G1,1))) ご指摘頂いた例での住所でも正しく表示出来ています。 (HT) ---- HT様へ ご迷惑をおかけしてすみませんでした。 もうどこから拾ってきた式かも忘れましたが、 とにかく1番と3番は試したところすんなりと県が表示されたのです。 ところが2番だけは「3」と表示されたのです。1番と3番と同じ表示になるものと思っておりました。 あれ ? と思って思いつくまま式を変更してみたのですがどうにもならなかったのです。 そこでこの場をお借りして答えをお伺いしたかったのでございます。 こんな大騒ぎになるとは夢にも思っておりませんでした。 いろんな方を巻き込んでしまいまことに申しわけございませんでした。 (shota) ---- >相手を見て回答を出しておられる方が多い 回答者の自由だと思いますよ。奉仕ですしね。得手不得手ありますしね。 さて、shotaさん折角質問したので理解できるまで、納得出来るまで質問したら如何ですか。 2番の=IF(ISERROR(FIND("県",LEFT(AA1367,4),1)),3,FIND("県",AA1367,1))が富山県と表示されないのは何故? というのが、最初の質問でしたよね。どんな数式にした方が良いとか悪いとかは、ひとまず置いておいて 何故「3」と表示される理由からですよね。 IF文はすでにご理解していると思いますのでその後からですが、理論式は ISERROR(FIND("県",LEFT(AA1367,4),1))の部分です。 ISERROR関数はテスト対象が、エラー値 #N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 、#NULL! の時 TRUE を返す関数です。 FIND関数は、指定された文字列 (検索文字列) を他の文字列 (対象) の中で検索し、その文字列が他の文字列内で最初に現れる位置を左端から数え、 その番号を返す関数です。 尚、検索文字列が対象の中で見つからない場合、エラー値 #VALUE! が返されます。 LEFT関数は、文字列の先頭から指定された数の文字を返す関数です。 つまり、理論式でやっている事はAA1367の文字列の4番目まで「富山県外」の文字列(この部分はLEFT関数) これがFIND関数の引数の対象となります。 富山県外のなかで県が何番目かを検索しています。(この部分がFIND関数) これが、ISERROR関数のテスト対象となります。 AA1367の先頭から4番目までの文字列に「県」が含まれているかどうかを判断していることになります。 今回の場合「県」が含まれているので、FIND関数の答えは3を返すので ISERROR関数の答えはFALSEとなりますので、IF関数の「偽の場合」のFIND("県",AA1367,1)が適用され計算されます。 AA1367の中で「県」は今回の場合3番目なので、結果3と計算されたことになります。 例えばAA1367の中に県がない場合、もしくは5番目以降に「県」が有った場合は 理論式のISERROR関数の答えはTRUEなのでIF関数の真の場合の3を返します。 つまり、県がい1〜4番目の時はその県の位置、それ以外は3しか答えがでないのです。 AA1367から文字列を取り出すという事がされていないのです。 下手な説明ですが理解していただければ幸いです。 (kenbou) ---- kenbouさん、もうやめましょう。 ↓をみればわかります。 [[20060326152403]]『計算式に含まれるセルが空白があれば、結果のセルも空白にしたい』(リクリン) そもそも学ぶ気などさらさらないのですよ。 それはそうとして、正直あきれました。 回答陣に。 (ramrun) ---- >それはそうとして、正直あきれました。 >回答陣に。 さまざまなスタンスの回答者がいらしたと思いますが どういう理由で呆れたのでしょうか? 全員にでしょうか、同じ理由ででしょうか。 理由抜きで言いっぱなしにするのは、あまり感心しません(庸) ---- >理由抜きで言いっぱなしにするのは、あまり感心しません(庸) について_くがく_が横から勝手にお答え致します。 (shota)さんは、つい先ほどまで、別の質問([20060326152403])をしていて、それについて回答をいただいていたのですが、「何処がわかって何処がわからなかったかを記入していただければ・・・のわかる範囲でお教えします。」という回答に対して (shota)さんは、「大変疲れました。今から横になります。」 と言ったのでもう寝てしまったと思ったと思います。 私も実際そう思いましたから。その言葉の乾かないうちにこの様な別の場所で出現しているものですから、きっと >それはそうとして、正直あきれました。 んでしょう。実は私も同じ思いでしたのでつい、しゃしゃりでてしまいました。 この学校は質問者・回答者だけではなく、見るだけで勉強している訪問者は私も含めて全国中に ん千人 いるんですから。 いつ書き込んだものかは時間の経過ですぐに分かります。 ---- これで、終結にしましょう。 ここはエクセルをみんなで勉強する学校です、喧嘩する場ではありません。 (kazu) ---- 皆様 どうもすみませんでした。 今後ともなにとぞご指導くださいますよう、どうか宜しくお願いいたします。 (shota)