- 締切済み
エクセルの関数について教えて下さい。
IF、ROUND、ORの組み合わせです。 仮にA1に数値(整数)を入力、B1に計算結果を表すとします。 B1の計算式は、少数第1位を整数値で四捨五入し =ROUND(A1/1.05,0) とします。 ここに数値入力以外に空白や記号のときに文字で表記するようにしたいのですが、組み合わせができません。 A1が空白、つまり数値が入力されなかった場合は空白とし、数値と別なデータが入力されたとき、例えば「****」と入力されたときを「休業」、「- - - -」と入力されたときを「出向」と表示したい場合の組み合わせです。 A1が未入力のときは =IF(A1>1,ROUND(A1/1.05,0)," ") で簡単にできるのですが、ORとの組み合わせになるのでしょうか、「****」「- - - -」の場合がどうしてもわかりません。 見よう見まねで覚えたので表現の仕方が少し変かもしれませんが、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
もう回答は済んでいるようですが、IF関数の質問がなぜ出るのかよくわからない、といつも思う。 下記のルールで考えれば簡単。 ーー 区分けは (1)空白 (2)以下は空白で無い場合 (2)数値 (3)以下は数値で無い場合 (3)数値以外 (A)**** (B)--- (C)その他 これらで同質なものを区別する場合はVLOOKUP(数値の大小や区間、文字列(例商品)に従ったコードや単価など) 本件は(1)-(c)まで共通性が無いのでVLOOKUPはやりにくいのでIF関数でやらざるをえない。 ーー そして(1)-(C)までの判別に優先関係(先後関係がある場合がある。例比較大小など一番大きい区画から聞いていくべきのようなもの)からIFを判別していく。 本件はそれが無い。 だからドレから聞いても良い。 ーー また両方を兼ねる関係も、本件では起こりえない。 だからだからドレから聞いても良い。 IF分のネストというものを使う。 (1)はまず=IF(A1="","",X)と考える (2)はIF(ISNUMBER(A1)、Y、Z) これを(1)のXと置き換える (3)はIF(A1="****","休業",U) これを(2)のYと置き換える。 (4)はIF(A1=”---"、"出向",V) これを(3)のUと置き換える。 Vはドレにも該当しないときなので"エラー”とかに決める。 それをVと置き換える そうすると式が完成する ーー こういう風な思考過程というか整理過程というかを通るはず。 (1)だけは先頭に=が着く。最後に底までの(左カッコ)のすうと幹カッコの数が同数になるように最後に補ってちゅ尻をあわせる。 ーーー (A)(B)以下(C)で場合の数が多いときは、この(3)以下の部分から以下はVLOOKUP関数を使える。同質の判定だろうから。 その場合はセル範囲に H列 I列 <--あくまで例え **** 休業 ーーー 出向 +++ 臨時 %%% 産休 ・・・ の対応表を作り、 =VLOOKUP(A1,$H$1:$I$100,2,FALSE) のような式を入れて、右列の語句を索引できる。 ーーーー 考え方の中にIFやOR的な要素が出てきても、普通はエクセル関数で適した関数がある場合が多く、IFで取り掛かるのは素人。エクセルの関数の本を読むこと。
- mks1902
- ベストアンサー率40% (11/27)
こんな感じでしょうか =IF(A1="****","休業",IF(A1="----","出向",IF(A1>1,ROUND(A1/1.05,0)," ")))
お礼
すいません、お礼はこちらのほうでした。 ありがとうございました。
補足
ご回答ありがとうございました。 1発でできました。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
IF関数の入れ子にするか =IF(A1>1,ROUND(A1/1.05,0),IF(A1="****","休業",IF(A1="----","出向"," "))," ") VLOOKUP等との連携 =IF(A1>1,ROUND(A1/1.05,0),VLOOKUP(A1,X1:Y3,2,TRUE)) X1="----",Y1="出向" X2="****",Y2="休業" X3=-99999,Y3=" "
お礼
すいません、お礼はこちらのほうでした。 ご丁寧にありがとうございました。
補足
mshr1962様、ご回答ありがとうございました。 IF(A1>1,ROUND(A1/1.05,0),IF(A1="****","休業",IF(A1="----","出向"," "))," ")は「この関数に対して、多すぎる引数が入力されています。その関数に必要な引数のヘルプを表示するには「OK」をクリックし、いったんこのメッセージを閉じます。そのあと、数式バーの左端にある等号(=)をクリックしてください」とエラーが出てしまいす。以前IFの組み合わせで何度かやってみたのですが、同じ様なメッセージが出てうまくいきませんでした。 Excel2003を使用しているんですがバージョンにもよるのでしょうか。 すいません、VLOOKUP関数も初めて知りました。 この方法は別なところで使えますので参考になります。 ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
B1セルには次の式を入力します。 =IF(A1="","",IF(ISNUMBER(A1),ROUND(A1/1.05,0),A1))
お礼
すいません、お礼はこちらのほうでした。 ご丁寧にありがとうございました。
補足
ご回答ありがとうございました。 IS関数と言うんですね。 KURUMITO様のご回答に従ってやってみたのですが少し調べてやってみないとうまくいかないんですが、 大変参考になりましたのでしばらくこの方法も勉強してみます。 ありがとうございました。
お礼
imogasi様、ご丁寧にありがとうございました。 確かに私など素人ですので一番に思いつくのはIFです。 ただ、用語自体が理解できないことも多くてどうしてもこのようなところでお世話になるしかなくて、教えていただく方には深くお詫びと感謝の気持ちをもっております。 今後ともよろしくご指導をお願いいたします。