質問: エクセルで特定のセルにある関数式を複数の場所で利用できる? エクセルで特定のセルにある関数式を複数の場所で利用できる? ある別シートのセルに作った条件式を本シートの複数の場所から式自体を参照して利用することは エクセルで可能でしょうか? 具体的には、シートaのh2セルにh5で入力された番号から自動で分類番号を入れる関数式 =if(h5="","",if(countif(h5,"*42*"),1,if(countif(h5,"*la*"),2,if(countif(h5,"*67*"),3・・・ をページ毎に入力してあります。 コピー&ペーストするだけで複製は可能なのですが、分類番号が増えると1箇所で修正を行い それを全ての場所にコピーする必要が出てきます。 そこで、シートbに関数式を入力しておき、その式をh3で読み出してh5の状態から最終的に h3へ分類番号を表示する・・・ こんなことはできるのでしょうか? ちなみに、可能となれば関数式中のh5では2ページ以降に適応できなくなるので (indirect(address(row()+3,column())) に置き換えて自分より3つ下のセルという形で参照させる予定です。 よろしくお願いします。
回答: 「条件の追加」についても想定はしましたが,ご質問に掲示された >=if(h5="","",if(countif(h5,"*42*"),1,if(countif(h5,"*la*"),2,if(countif(h5,"*67*"),3・・・ この式は「=if(if(if(...」の重ね合わせで書かれていたので,あと幾つも条件を追加しないうちにカッコの重ね合わせ限度に達します。結果してそういった使い方では上手くやる以前に数式がそもそも書けないので,そういうお話では無いだろうと判断していました。 方法1) 今の式を =if(h5="","", if(countif(h5,"*42*"),1) + if(countif(h5,"*la*"),2) + if(countif(h5,"*67*"),3) ) のように直します。 2個目以降のifの組み方が「いままでとは違う」ので,よく注意して見逃さないように気を付けてください。 置換を使い,たとえば if(countif(h5,"*67*"),3) を if(countif(h5,"*67*"),3)+if(countif(h5,"*43*"),4) に全て置換するといった方法で,幾らでも数式を追記していくことが出来ます。 方法2) 非常にテクニカルですが,名前の定義の中に数式を直接記述して計算させる方法も利用できます。 あるシートで「h2セルを選択する」(必須) 挿入メニューの名前の定義で次の通り登録する 名前 h2の式 参照範囲 =if(!h5=text(now(),""),"",if(countif(!h5,"*42*"),1,if(countif(!h5,"*la*"),2,if(countif(!h5,"*67*"),3)))) 「h5」じゃなく「!h5」なので,間違えないように作成します 各シートのh2セルに =h2の式 と記入する。 #説明不足のため,他のセルに式を転用したいその「他のセル」が,他のシートのh2セルなのか同じシートの別番地セル(たとえばh12に数式を入れてh15を計算したい)というお話なのか,不明です。 上述のサンプルは最大限の自由度で,任意のセルに入れて3つ下のセルを自動的に計算するように作成してあります。 が,その引き替えに数式を修正するときは,またh2セルを選んで名前の定義で数式を追加するなどのコツが必要になります。 シート1,2,3を移るだけでh2番地であることは変わらないなら,もっと簡単に扱える風にも出来ました。 方法3) 数式の中に「*42*」やらを直接記入する方法は放棄して,対応表を別に用意,そしてもうちょっと難易度の高い数式で計算させます。 #ただし。 エクセルマニアなら喜んで難しい数式を考えてくれますし,それを「コピーするだけ」なら多分誰にも出来ますが,ぶっちゃけ言えば(if(if...の式でいっぱいいっぱいの)素人さんが読み解くにはちょっと難しい結果になります。ワタシ的にはこのアプローチはあまりお奨めでは無いと思います。 ワイルドカードの逆引きになるので,通常のvlookup等では出来ません。