- ベストアンサー
エクセルのセルを他のセルに反映させる方法
エクセル2000において 例として A1のセルに「aaa-bb」と入力したら A3のセルに「#####」と出てくるようにするにはどうしたらよいのでしょうか? A1やA3のセルに入力する「aaa-bb」や「####」の値は4~5種類になります。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
merlionXXです。 数値の場合もあるんですね。 それなら式を変えなくては・・・。 =IF(A1="","",IF(NOT(ISERROR(SEARCH("a10",A1,1))),"####",IF(NOT(ISERROR(SEARCH("b10",A1,1))),"$$$$",IF(NOT(ISERROR(SEARCH("c10",A1,1))),"%%%%","何それ?")))) これでどうでしょうか?
その他の回答 (8)
- merlionXX
- ベストアンサー率48% (1930/4007)
> 検索セルに入力規則でリストが出るように、 > ドロップダウンの設定をして検索対象を絞りました。 入力規則で対象を絞れるなら、エラーは出ませんから式はもっと簡素化できますね。数値だけ入力されることもないでしょうからその手当ても要らなくなります。 ただ、それであれば、「○○を含む」の検索はやめ、「○○」だけ選択させるわけにはいかないですか?式がここまで複雑化しているのは、「○○を含む」検索だからです。 あるいは、入力された文字列の先頭から3文字とかで特定できるのであればやはり簡素化できます。
お礼
色々とご教授、アドバイスありがとうございます。 少し簡素化して見ようと思います。 本当に何度も何度も教えていただきありがとうございます。 感謝しております。
- merlionXX
- ベストアンサー率48% (1930/4007)
satopowerさんは、この件につき別途質問を立てているようですね。 http://odn.okwave.jp/qa2713292.html そこで、 > 最後のNOT*ISERRORを消すとOKになりますが・・ で、解決となっていますが、NOT*ISERRORを消したら、まったく検索対象外データの場合VALUEエラーとなり。「何それ?」は出ませんよ。
お礼
確かに、VALUEエラーになってしまいました。 解決方法がわかりませんでしたが、検索するセルの内容が 10種類くらいしかなかったので、検索セルに入力規則でリストが出るように、 ドロップダウンの設定をして検索対象を絞りました。 いろいろありがとうございました。 大変助かりました。
- merlionXX
- ベストアンサー率48% (1930/4007)
> 5個以上いれるとエラーになってしまうのはなぜなのでしょうか? IF条件を増やしたということですね? IF関数のネストは7つまで出来たと思いましたが、わたしも試しにやってみたらIFが6つでエラーになりますね。わたしにも原因はわかりません。ひょっとすると他の関数と組み合わせているせいかもしれませんね。
- merlionXX
- ベストアンサー率48% (1930/4007)
#1です。 含む場合でしたか。 では、aaaを含む場合、bbbを含む場合、cccを含む場合の例です。 =IF(A1="","",IF(SUBSTITUTE(A1,"aaa",,1)<>A1,"####",IF(SUBSTITUTE(A1,"bbb",,1)<>A1,"$$$$",IF(SUBSTITUTE(A1,"ccc",,1)<>A1,"%%%%","何それ?"))))
補足
また、早速のご教授ありがとうございます。 merlionXXさんはエクセル、関数にとても詳しいのですね。 すばらしいです。 私はそこまでわかりません。 そこで、もう一つ教えていただきたいのですが。 aaaの部分を「a10」とすると「####」にしたく、変えたのですが 「10」とだけ入力しても「####」となってしまいます。 また。aaaやbbb等A1に入力したものと一致しなければ反映されずに「何それ?」となるような方法はご存知でしょうか?
- zap35
- ベストアンサー率44% (1383/3079)
IF関数を入れ子にして =IF(A1="aaa-bb","#####",IF(A1="bbb-cc","$$$$$","")) のようにするのが簡単ですが、パターンが増えると式も長くなって大変です。 どこかのセルに(仮にB1:C3としますが) aaa-bb ##### bbb-cc $$$$$ ccc-dd %%%%% のような表を作成しておき、 =VLOOKUP(A1,B1:C3,2,0) で検索させる方法もあります。ただしこの式だけだとヒットしないときエラーになりますので =IF(ISNA(VLOOKUP(A1,B1:C3,2,0)),"",VLOOKUP(A1,B1:C3,2,0)) とエラー処理を加える必要があります。
補足
早速のご教授ありがとうございます。 関数を使ってみたら、出来ました。 私の説明不足だったのですが aaa-bbの内aaaを含む場合に###と反映させるにはどうしたらよいのでしょうか?
- mu2011
- ベストアンサー率38% (1910/4994)
入力内容と変換内容を対応させたテーブルを予め作成して、VLOOKUP関数で抽出する方法が簡単かと思います。 (1)対応テーブルの設定 例えば、D列にaaa-bb、E列に#####等の組み合わせを定義 仮に範囲をD1:E5とします。 (2)A3セルに=IF(A1<>"",VLOOKUP(A1,$D$1:$E$5,2,FALSE),"")
- merlionXX
- ベストアンサー率48% (1930/4007)
こんな感じでしょうか。 =IF(A1="","",IF(A1="aaa-bb","####",IF(A1="bbb-cc","$$$$",IF(A1="ccc-dd","%%%%")))) もっと種類を増やしたいなら、対象表をつくってVLOOKUP関数の方が良いとは思いますが。
補足
早速のご教授ありがとうございます。 関数を使ってみたら、出来ました。 私の説明不足だったのですが aaa-bbの内aaaを含む場合に###と反映させるにはどうしたらよいのでしょうか?
- shizuku84
- ベストアンサー率60% (3/5)
if関数を使ってはいかがでしょうか。 if(条件,真の場合,偽の場合)と書くので、 if(A1="aaa-bbb","#####","")みたいな書き方でいいと思います。 (ウロオボエですみません) if関数の中にif関数を書けるのでそれで対処してみてはいかがでしょうか。
補足
早速のご教授ありがとうございます。 関数を使ってみたら、出来ました。 私の説明不足だったのですが aaa-bbの内aaaを含む場合に###と反映させるにはどうしたらよいのでしょうか?
補足
おぉぉぉ! さすがですね、ばっちりです。 しかし、「IF(NOT(ISERROR(SEARCH("a10",A1,1))),"####",」を5個以上いれるとエラーになってしまうのはなぜなのでしょうか? a10や####の値は変えました。 カッコの個数も増やしました。