[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでの書き方がわかりません。』(まお)excel2007 window7
VBAで書くとコンパイルエラー プロジェクトまたはライブラリが見つかりませんとでてしまいます。
Range("年度別!B5").value = SumProduct((Year([itiran.xls]work! & "B5:B2000") = Range("年度別!C5")) * [itiran.xls]work! & "F5:F2000")
どう書けばいいんでしょうか
式を書くときは Value ではなく Formula に 文字列としておきます。
こちらでマクロの記録で式を置くとこんな感じで出てきました。 Range("E5").Select ActiveCell.FormulaR1C1 = _ "=SUMPRODUCT((YEAR([itiran.xls]work!RC[-3]:R[1995]C[-3])=R[-4]C)*[itiran.xls]work!RC[1]:R[1995]C[1])"
整理して書くと、 Range("E5").FormulaR1C1 = "=SUMPRODUCT((YEAR([itiran.xls]work!RC[-3]:R[1995]C[-3])=R[-4]C)*[itiran.xls]work!RC[1]:R[1995]C[1])"
ですが R1C1形式がわかりずらければ R1C1を外して、セルアドレスに置き換えればいいでしょう。 Range("E5").Formula = "=SUMPRODUCT((YEAR([itiran.xls]work!B5:B2000)=E1)*[itiran.xls]work!F5:F2000)"
とできます。 シートを指定するなら、文字列の中はEXCELの数式の指定方法。VBA の中は VBA の文法に従って書きます。 Range("E5").Formula =.... は WorkSheets("年度別").Range("E5").Formula =.... です。 (Mook)
VBAでワークシート関数を使う場合は
Application.シート関数 あるいは WorkSheetFunction.シート関数 と記述。 かつ、何でも使えるわけではなく、つかえないものもある。(VBAヘルプに使うことができる関数のリストがある)
で、SUMPRODUCT は一応使えるんだけど、制約がいろいろあって、使えないことが多いみたい。 (そもそも、私自身が関数音痴で、特にSUMPRODUCTが不得意なので、ピリっとしたコメントができないんだけど)
Range("年度別!B5").Value = Evaluate("SUMPRODUCT((YEAR([itiran.xls]work!B5:B2000)=E1)*[itiran.xls]work!F5:F2000)")
こうしたらどうなるかな? (ぶらっと)
あっ、式を設定したいというのではなく、計算結果を代入したいということでしたか。 勘違い失礼しました。
それから Range("年度別!B5").Value って あら、できるんですね。
出来ないものと思い込んでました。 (Mook)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.