[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAの構文をexcelの関数に』(109)
下記のVBA構文を、EXCELの関数に書き換えたいのですが
=MOD((BirthYear-4)*5+INT((BirthYear-1)/4)+ReferenceValue+BirthDay,60)
< 使用 Excel:unknown、使用 OS:Windows7 >
(γ) 2016/09/29(木) 21:04
自分で作ったコードですか? そうでしたらわからないはずないと思います。 他人が作ったコードでしたら作った人に聞いてはいかがでしょう??
ヘルプを見る、あるいはネットでキーワード検索するだけで解決する と思います。
自分で手を動かした方がよっぽど解決が早いと思いますよ。 (カエムワセト) 2016/09/29(木) 21:05
ここからコピペしたの? http://crown-crown.com/2013/07/60%E7%A8%AE%E9%A1%9E%E3%81%AE%E5%8B%95%E7%89%A9%E5%8D%A0%E3%81%84%E3%81%AE%E5%88%A4%E5%AE%9A%E5%80%A4%E3%81%AE%E8%A8%88%E7%AE%97%E5%BC%8F (bi) 2016/09/29(木) 21:08
このコードは、(bi)さんが、リンクしたページからですが、reference valueとう
のがよくわからず、VBAの構文かと思い、reference value というのを、
vlookup(検査値、範囲、列番号、検索方法の指定)に置き換えたのですが
うまくいきません。(#value)
=MOD((BirthYear+1)*5+INT(BirthYear/4)+ReferenceValue+BirthDay,60)
を
=MOD((A1+1)*5+INT(A1/4)+VLOOKUP(F1:H12,3,FALSE)+C1,60)
※C1生まれた日
つまり、例:1970年3月生まれなら、49(下記のreference valueから参照)を返してほしいのです。
検査値の範囲は、A1の生まれ年とA2生まれ月、参照範囲は、下記のとおりです。
F列 G列 H列
1970 1 15
1970 2 46
1970 3 49
1970 4 20
1970 5 29
1970 6 21
1970 7 51
1970 8 22
1970 9 53
1970 10 23
1970 11 54
1970 12 24
みなさまのお力お貸しください。よろしくお願いします。
(109) 2016/09/29(木) 22:19
>=MOD((BirthYear-4)*5+INT((BirthYear-1)/4)+ReferenceValue+BirthDay,60)
その式が、biさんご紹介のページのものだとすると、間違ってますよ。 いや、引用した式がじゃなくて、元々の式がです。だって「60」が出てこないですから。
60も出すには ↓ B1セル =MOD((YEAR(A1)-4)*5+INT((YEAR(A1)-(MONTH(A1)<3))/4)+INDEX({15;46;49;20;29;21;51;22;53;23;54;24},MONTH(A1))+DAY(A1)-1,60)+1
<Sheet1 結果図>
行 ____A____ _B_ 1 2016/1/1 19 2 2016/1/2 20 3 1970/3/1 52 4 1970/3/2 53
>vlookup(検査値、範囲、列番号、検索方法の指定)に置き換えたのですが
Vlookの代わりに、こんなのでもできます(上で使った方法。他にも方法はあります) ↓ INDEX({15;46;49;20;29;21;51;22;53;23;54;24},MONTH(A1))
(半平太) 2016/09/29(木) 22:30
INDEXのほうが、かんたんですね。
ちなみに、ひとつの構文で、3月以前の数式と、以降の数式を
まとめることはできるのでしょうか。
(109) 2016/09/29(木) 23:53
>ちなみに、ひとつの構文で、3月以前の数式と、以降の数式を >まとめることはできるのでしょうか。
既にまとめてありますよ。 ここ _____↓_____ (YEAR(A1)-(MONTH(A1)<3))/4
(半平太) 2016/09/30(金) 08:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.