- ベストアンサー
この関数式の改良法について教えてください。
旅費精算の事務をしているものでして、以下のような状況で急行券の代金を算出するために次の関数式を作りました。 H22繁忙・閑散:日にちが行でグループ分けして書いてあります。 運賃表:繁閑によってプラス200、マイナス200の調整をする駅の名称、路程、乗車賃、急行券等が書いてあります。 運賃表(2):繁閑によってプラス400、マイナス400駅の名称、路程、乗車賃、急行券等が書いてあります。 I列:出発日です。 L列:到着駅です。 =IF(I5="","",IF(COUNTIF(H22繁忙・閑散!$A$1:$H$24,I5)>=1,IF(COUNTIF(運賃表!$A$2:$N$286,L5)>=1,VLOOKUP(L5,運賃表!$A$2:$N$286,5,0)-200,IF(COUNTIF(運賃表(2)!$A$2:$N$286,L5)>=1,VLOOKUP(L5,運賃表(2)!$A$2:$N$286,5,0)-400,"")),IF(COUNTIF(H22繁忙・閑散!$A$25:$H$46,I5)>=1,IF(COUNTIF(運賃表!$A$2:$N$286,L5)>=1,VLOOKUP(L5,運賃表!$A$2:$N$286,5,0),IF(COUNTIF(運賃表(2)!$A$2:$N$286,L5)>=1,VLOOKUP(L5,運賃表(2)!$A$2:$N$286,5,0),"")),IF(COUNTIF(H22繁忙・閑散!$A$47:$H$67,I5)>=1,IF(COUNTIF(運賃表!$A$2:$N$286,L5)>=1,VLOOKUP(L5,運賃表!$A$2:$N$286,5,0)+200,IF(COUNTIF(運賃表(2)!$A$2:$N$286,L5)>=1,VLOOKUP(L5,運賃表(2)!$A$2:$N$286,5,0)+400,"")))))) この関数でできることを変えずに、短くすることはできるでしょうか? そして、2列に分けて処理せずにこの関数式から出された数字が200以下だった場合に、算出しているセルに何も表示させないようにするには、どうすればいいでしょうか? officeのバージョンが2003なのでこれ以上長くするのには限界があるのです。(上記関数式(ここではAAAとします。)とすると、 IF(AAA<200,"",AAA)というような感じで入力しようとしましたが、長すぎてだめでした。) 詳しい方、アドバイスお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
- MackyNo1
- ベストアンサー率53% (1521/2850)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
- passes
- ベストアンサー率26% (11/42)
- mu2011
- ベストアンサー率38% (1910/4994)
関連するQ&A
- エクセルの関数の直し方
現在、画像のような表を作成しておりますが、 1行目の前の行に5行挿入したいと考えております。 下の表からデータを製番・区分ごとに合計して上の表に表示されるようになっています。 5行挿入してタイトル等入れたいと思い、挿入してみると、 今まで下の表からの合計が上の表に表示されなくなってしまいます。 セル番号等確認はしてみたのですが、 どこがいけなくてうまく表示されないのかがわからなくて困っています。 どのように直したらいいかをご教示お願いいたします。 現在入っている関数は以下の通りです。 A2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(A1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(A1)),Sheet1!$L$14:$L$38,0),MATCH(A$1,Sheet1!$B$13:$I$13,0))) B2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(B1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(B1)),Sheet1!$L$14:$L$38,0),MATCH(B$1,Sheet1!$B$13:$I$13,0))) C2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(C1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(C1)),Sheet1!$L$14:$L$38,0),MATCH(C$1,Sheet1!$B$13:$I$13,0))) D2=IF(A2="","",SUMIFS(Sheet1!$G$14:$G$38,Sheet1!$B$14:$B$38,A2,Sheet1!$H$14:$H$38,B2)) E2=IF(C2="","",IF(ISERROR(VLOOKUP(C2,list!$S$3:$T$6,2,0)),"",VLOOKUP(C2,list!$S$3:$T$6,2,0))) H14=IF($E14="","",IF(ISERROR(VLOOKUP($E14,INDIRECT($J14),3,FALSE)),"",VLOOKUP($E14,INDIRECT($J14),3,FALSE))) I14=IF($E14="","",IF(ISERROR(VLOOKUP($E14,INDIRECT($J14),4,FALSE)),"",VLOOKUP($E14,INDIRECT($J14),4,FALSE))) J14=IF(ISBLANK(B14),"",IF(B14<="J121100144","旧","新")) K14=IF(AND(B14<>"",H14<>"-"),B14&"_"&H14,"") L14=IF(AND(K14<>"",COUNTIF(K$14:K14,K14)=1),COUNTIF($K$14:$K$38,"<"&K14)+1,"")
- ベストアンサー
- オフィス系ソフト
- VLOOKUP関数 エクセル関数教えてください
=IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?
- 締切済み
- Windows系OS
- VLOOKUP関数について教えてください。
航空運賃の料金計算という問題をしています。 (1)行先番号と時期番号を入力すると、自動的に運賃が計算できる計算表を完成しなさい。 (2)さらに事前割引表を元に、割引ができる表に改めなさいという問題になります。 (1)はMATCH関数とVLOOKUP関数で、なんとかできたのですが(2)がさっぱりわかりません。 (1)の時点ではこんな感じで数式を入れています。 H I J 出発地 東京(固定です。) 行先番号 =MATCH(I5,C6:F,0) 時期 料金 =VLOOKUP(I4,C6:F33,J,FALSE) (B2:E4の形で横に表にしたかったのですが、上手くMATCH関数を入れられず横に新たに作って考えています。) *行先・金額の表はこのような形で入力しています。 B C D E F 行先 番号 通常期 多客期 閑散期 札幌 1 24050 25250 21500 沖縄 27 34400 40660 37660 時期分類表 番号 1 通常期 7/1~7/31、8/21~11/30、2/1~3/31 2 多客期 8/1~8/20、12/27~1/6 3 閑散期 12/1~12/26、1/7~1/31 事前割引表 4週間前 運賃50%引き 3週間前 運賃30%引き 2週間前 運賃22%引き (2)の問題をとくには、まずI5にいつの時期かを判定?する数式を入れないとダメなのでは?、と思うのですがわかりません。 ちょうど7つだしIFのネストは7つまでできたから、と思ったのですが7/1~7/31どう入力すればいいのかわからず挫折。 次にこの日付を全部入力横の列に番号を入力、日付を検索値にして1~3をVLOOKUPで引っ張り出せばと思ったのですが上手くいきません。 (検索地が日付で数値でないからでしょうか?) 4週間前というのは1月前と考えて、3週間前は3×7日と考えて21日と考えるのかな?と思ったのですが、そこまでしか思いつきませんでした。 すみませんがこの問題の解き方、教えてください。 どうぞよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 急いでます。エクセルの関数教えて下さい
=VLOOKUP(E4,B4:C7,2) という式があって、 #N/Aを表示させたくないときに=IF関数を使うのはわかるのですが、 このIFと VLOOKUPの式のつなげ方ってどうやるんでしょうか? よろしくお願い致します
- ベストアンサー
- オフィス系ソフト
- LibreOfficeの関数について
IF($H5="","",IF(L5="データA","",VLOOKUP($H5,$B$5:$F$10,2+(L5="データB"),0)&"")) IF($H5="","",IF(L5="データB","",VLOOKUP($H5,$B$5:$F$10,3-(L5="データA"),0)&"")) という式を重複と漢字に対応させるにはどうしたらよいでしょうか? 例えばデータA、Bというところを収入や支出としできれば重複データに対応させたいです。
- 締切済み
- オフィス系ソフト
- (エクセル)2つの関数の式について。
【=IF(A1=1,VLOOKUP(検索値,範囲1,列番号),IF(A1=2,VLOOKUP(検索値,範囲2,列番号),""))】 の式は2つの関数を混ぜてあるのですが、どのように指定すればいいいのでしょうか?fxをクリックしてIF関数を選び、論理式でA1=1をいれ、真の場合のところにVLOOKUP(検索値,範囲1,列番号)をいれてOKするとエラーになります。式の指定の仕方が分かりません。
- 締切済み
- オフィス系ソフト
- Excel、関数に付いての質問です。
Excel、関数に付いての質問です。 度々の質問で申し訳ありません。 添付のエクセル表で、F4に価格を出したいのですが、どのようにしたら良いでしょうか? (A4の商品名をB4に「1」があるとき、D4の購入場所区分「1」の価格表から価格を出したい) A商店のみで購入する場合は「=IF(B4=1,VLOOKUP(A4,$H$4:$I$8,2,0),"")」で出していたのですが…。 INDEXや、MATCH関数の使い方の本も読んでみたのですが、完敗してしまいました。 分かりにくかったら申し訳ありません。補足させていただきます。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル関数
=IF(COUNTIF($C$40:$C$55,$B3),"休館日",VLOOKUP(WEEKDAY(B3),{1,"";2,"";3,"";4,"休館日";5,"";6,"";7,""},2,0)) 上記の関数を入力するとエクセル2003では、#N/A とメッセージが出てしまうのですが、 また、質問しました 年間の指定した日と毎週水曜日の両方を休館日にするには、上記の関数を 入力したのでは、表示されません。 ご回答お待ちしております。
- ベストアンサー
- Windows系OS
- エクセル2010 関数
こんにちは。詳しい方お教えください。 添付の画像の黄色部分の関数は =IF(VLOOKUP($A3,$A$15:$C$19,2)="収入の",VLOOKUP($A3,$A$15:$C$19,3)*H3,IF(VLOOKUP($A3,$A$15:$C$19,2)="月額固定",VLOOKUP($A3,$A$15:$C$19,3), IF(VLOOKUP($A3,$A$15:$C$19,2)="年額固定",VLOOKUP($A3,$A$15:$C$19,3)/12,""))) という事がわかったのですが この場合の $15:$C$19,2 や 19,3って何を指すものでしょうか? すみません、勉強不足なのは重々承知の初心者です。 この関数を基に、同じような書類を作りたいと考えたのですが そこがわからず進みません。 よろしくお願い申し上げます。
- ベストアンサー
- Excel(エクセル)
- 【OpenOffice】vlookup関数を条件式として使う
【OpenOffice】vlookup関数を条件式として使う タイトルどおりなんですが A2に書いた値がE2からE200の表内の値と一致するかどうかを条件にif文を以下のように =IF($A2=VLOOKUP($A2;$E$2:$E$200;1;0);OK;NG) 作ったんですがTRUEでない場合、NGが表示されず空白を示す#N/Aが表示されてしまうんです ちゃんとNGが表示されるようにするにはどうすればいいのでしょうか? どなたか教えていただけませんでしょうか、よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
すばらしいですね。 できました。 ありがとうございました。