[[20120320141507]] 『月ごとに計算式を変更したい。』(nazon) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『月ごとに計算式を変更したい。』(nazon)

[月ごとに計算式を変更したい。
Excel2003についてお伺いします。
月毎に替わる為替レートで、経費を計算しているのですが、
1シートの中に、2月またがって記載されています。

A列 2/28、2/29、3/1、3/2、3/3、3/4
月毎に表を作成して計算していましたが、
1シートで集計できないかと思い、お伺いしました。
月日が入っている枠(A9〜A39)で、月が替われば
変わった部分については、このレートで計算する、
といったことができるでしょうか?

どこから変更するかわからないのと、1日1行はなく、
1日で数行使用する場合もあり悩んでいます。

](nazon)


 A列の日付の中の MONTH(A9) を IF文で判断すればいいと思うけど、かわったらということだと
 ●9 に =IF(A9="","",IF(MONTH(A9)=MONTH(A$9),同じ月のレートを使った式,かわった月のレートを使った式)) とか?
 これを●39までひっぱる。

 ただ、どこで変わるかわからないということは、A9が【すでに変わっている】可能性もある?
 そうなると、上記では具合が悪いね。

 それに、上記は2ヶ月分のみ限定。3ヶ月以上だと、A$9との比較ではなく別の構えが必要。(1月ならこう、2月ならこう、3月ならこう、・・・・・)
 その場合、IF分のなかでのネストが非現実的にもなるね。

 むしろ、別に、月別のレートテーブルを持っておいて、それを検索して使うという構成のほうがいいかも。

 それと、レイアウトの変更ができるのなら、レート欄は別列にしておいて、そこにレートをセット。
 ●列では、その列を参照して淡々と計算させる方がすっきりするような気がする。 

 (ぶらっと)


 # ぶつかったけれどアップです。

 月ごとの為替を表で設定しておき、そこから VLOOKUP で引いたらどうでしょうか。
 別シートでも良いですが、下記の表に [為替レート] と名前を付けておき
 2012_01     77
 2012_02     78
 2012_03     80
 (年と月の間はスペース ⇒ _ に変更)

 計算部分では  ★ 教えてもらった ! を反映しました^^
 =VLOOKUP(Text(A1,"YYYY!_MM"),為替レート,FALSE)
  のように参照すれば、A列の日付に応じたレートで計算できると思います。

 P.S.
 本当は _ を使いたかったんだけれど、TEXT 内で _ を使うにはどうしたらいいんだろう?
 (Mook)


ぶらっとさん、Mookさん、
ご回答ありがとうございました。

フォーマットとして作成のため、
表の右上に為替レート表がありますのでこれを使用してみようと思います。
(nazon)


 質問者さんと衝突してしまいましたが。。。

 うまくいかない様であれば
 >1日1行はなく、1日で数行使用する場合もあり悩んでいます。
 と言う事ですので、表がどの様に成っているのか
 詳しく書いておかれるのが良いと思います。

 また、その場合
 表のレイアウト等の変更が出来るのか、出来ないのかも
 合わせて書いておかれると良いと思います。

 To,Mookさん
  「!」です。

 (HANA)


 さすが HANAさん、できました^^
 ありがとうございました。

 上も修正しました。
 (Mook)


HANAさん、コメントありがとうございました。

Mookさんにご紹介いただいた方法ですが、表示方法を変えると、
検索がうまくできません。
きっと何か書き方が違うのですよね。
下記のような形で表示するのはどうすればよいでしょう?

 レート表

 9月 78
 10月 80
 11月 77

 または

 9 78
 10 80
 11 77

 A列
 9/29
 9/30
 10/1
 10/2
 (nazon) 


 Mookさんが書いて居られる方法では、VLOOKUP関数が使われています。

 VLOOKUP関数についてしらべてみましたか?

  VLOOKUP(検索値,範囲,列番号,検索の型)
   指定された範囲の左端の列で特定の値を検索し、範囲内の対応するセルの値を返します。

 作った式は
 >=VLOOKUP(Text(A1,"YYYY!_MM"),為替レート,FALSE)
 なので、 A1セルの日付を YYYY!_MM の表示で表した物
 (例えば 2012/2/28 だったら 2012_02)を
 為替レートと名前を付けた範囲
             <1>      <2>
   [1]     2012_01     77
   [2]     2012_02     78
   [3]     2012_03     80
 の左端の列  ↑この列 で検索し
 範囲内の対応するセル(2行目に有るので、その2列目のセル)の値「78」を返します。

 為替レートと名前を付けた範囲の左端の列の入力を YYYY_MM 以外にするのなら
 VLOOKUP関数の検索値に設定する物も それに合わせて変更が必要です。

 「月」だけを入力するなら、 A1セルの日付から「月」だけを取り出して検索値にする。
 「○月」と入力するなら、A1セルの日付から「○月」と言う形で取り出して検索値にする。

 VLOOKUP関数は 数字と数値を区別するので
 「月」だけを入力した場合、文字として入力されているのか 値として入力されているかによって
 検索値の設定方法も変わって来ます。

 たぶん、値で入力されると思うので MONTH関数で良いとは思いますが。。。

 仕組みを理解して下さい。
 それに合わせて式を変更して下さい。

 それでもやはり上手く行かない場合は、どの様な式にしたのか。
 上手く行かない式と合わせて、新規作成したブックから
 同じシートがこちらで作れるだけの情報を載せてもらえると良いと思います。

 (HANA)

  
 =VLOOKUP(Text(A1,"YYYY!_MM"),為替レート,FALSE)
 これのYYYY!_MMを、月表記に変えようとしたのですが、
 (もちろんレート表の記載も変更してます)
 うまくいかず、私の記載方法がおかしいのだろうと思い、
 おうかがいしました。

 =VLOOKUP((MONTH(A1),為替レート,FALSE))
  でうまくいきました。

 Mookさん、HANAさん 
 ありがとうございました。

(nazon)


 >これのYYYY!_MMを、月表記に変えようとしたのですが、
 この時の式は
 =VLOOKUP(Text(A1,"M"),為替レート,FALSE)
 としましたか?

 これが上手く行かないのは、先にも書きましたが
 ◆VLOOKUP関数は 数字と数値を区別するので
  文字として入力されているのか 値として入力されているかによって
  検索値の設定方法も変わって来ます。
 部分が該当します。

 こんな事を試してみて下さい。

 A1セルに 2012/3/23 の日付をいれて
 B1セルに =MONTH(A1)
 B2セルに =TEXT(A1,"M")
 C1セルに =TYPE(B1) として、C2セルにコピー

 B1:B2セルは「3」と同じ様な物が表示されていますが
 C1:C2セルの戻り値は異なります。

 為替レートの1列目のセルも、TYPE関数で調べてみて下さい。

 =VLOOKUP(B1,為替レート,FALSE)
 とした時に、TYPE関数が一致しているセルは
 検索値が見つかり、値が参照されます。

 一致していないセルは、検索値が見つからず #N/Aエラーに成ります。

 「自分がどう見えているか?」より
 「エクセルがどう認識しているか?」が重要ですので
 こういった場合は注意して貰うと良いと思います。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.