- 締切済み
VBAに関数を入れる方法
VBA記述の中に、例えばAVERAGE関数を入れないのですが良く判りません。 もし、A1からA500位までにデータがあって、B20位から下位行にA列と平行して平均値を求めたい場合DO ~ LOOPで繰り返すのですが、B20にセルを置き ActiveCell.Formula = ”=AVERAGE(A1;A20)” の様な時に、もしA1なりA10なりに変数を使用したい場合には、”=AVERAGE(A1;A20)” の部分はどのように記述すればいいのでしょうか?。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- Excel VBAで、Averageの範囲を変数を使って記述したい。
VBA初心者です。 例えば、 n=1~26 n=1の時 Range(A1:Z1).Formula=("=average(A2:A5)") n=2の時 Range(B1:Z1).Formula=("=average(B2:B5)") n=3の時 Range(C1:Z1).Formula=("=average(C2:C5)") (以下、n=26まで続く) これを変数を使って、すっきり記述するにはどうすればよいのでしょうか?よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルVBAでセルのクリックイベントについて
エクセルのVBAでDo Whileループの中で,いずれかのセルがクリック され(アクティブ)になったことを知る方法が分かりません。 調べたいセルの個数は数十個で,セルのクリックを連続的に行い, その度に,ある操作を行いたいのです。 Do while flag=true if ActiveCell.Address="A1" then **** if ActiveCell.Address="A2" then **** if ActiveCell.Address="A3" then **** (これをいくつか記述) (ループから抜け出る記述) loop これだと,無限ループに陥ってしまいます。 どなたか,お知恵をお貸しください。
- ベストアンサー
- Visual Basic
- VBAについて
いつもお世話になっています マクロ・VBA超初心者です。 質問させてください。 現在シート1の完売のセルの欄に○が入っていれば日付をみてシート2の同じ日付の隣のセルに○を入力しようと思っているのですが、シート2の日付を検索はしているんですが入力がいきません Sheet1 ↓セルA1 ↓セルB1 5月26日 26 B1のセルはDAY(A1)にて出してます 完売 A氏 ○ Sheet2 ↓A列 ↓B列 5月 1日 ・ ・ ・ 26日 ○ ←シート1の所に○が付いているとシート1セルB1と同じ 27日 日付の隣のセルに○を入力 28日 VBA Sub test() Sheets("Sheet2").Select Range("A1").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Activate If ActiveCell.Value = Worksheets("Sheet1").Range("B2") Then ActiveCell.Offset(0, 1).Activate If ActiveCell.Value <> "○" Then ActiveCell.Valu = "○" ActiveCell.Offset(0, -1).Activate Else ActiveCell.Offset(0, -1).Activate End If Else End If Loop Sheets("Sheet2").Select Range("A1").Select End Sub どこが間違っているかわからない状態です。 分かりにくい説明ではあるんですが教えてください お願いします。
- 締切済み
- オフィス系ソフト
- エクセルVBAでの関数
下記、コードでセルに関数を入れるようにしてるのですが 関数で得られた値をセルに反映されるようにしたいのですが Dimを使用してもどう指定してよいのかわからず苦戦しております。 宜しくお願い致します。 Range("F1").Select Do Until ActiveCell.Offset(0, -1).Value = "" With ActiveCell .FormulaR1C1 = "=MID(RC[-1],2,3)" .Offset(1, 0).Select End With Loop Range("A1").Select Do Until ActiveCell.Offset(0, 2).Value = "" With ActiveCell .FormulaR1C1 = "=RC[11]&RC[5]&Rc[8]&rc[9]&rc[3]" .Offset(1, 0).Select End With Loop
- ベストアンサー
- Visual Basic
- VBA セル内の関数の参照先
あるExcel2000のファイル セル A1に20 A2に30 A3に50 A4に10 A5に60 セル B1に30 と表示されています B1の中は =Average(A2:A4) となっています 私はVBAでこのB1の中のAverage関数の参照先を取得したいのですがその方法が分かりません 例えば A=Cells(1,2)や A=Range(B1) としても変数Aは当然ですが30となってしまいます EXCELの関数でセルの中にある関数や参照先を抽出出来るものがないかと探して見ましたが私には見つける事が出来ませんでした。 セルの中にある関数、もしくはその関数の参照先を抽出する方法は無いのでしょうか よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ☆Excel VBAでAVERAGE関数を使うとき・・・
こんにちは。VBA初心者です。 VBAでAVERAGE関数を使いたいのですが、参照範囲を最終行まで指定したい場合、 どのようプログラムすれば良いのでしょうか? A B C 1 5000 2 2000 3 3000 4 1000 5 6000 6 : 7 : ← A列の値を平均する。 A列には膨大な行が存在すると仮定します。 VBAに詳しい方、教えてください。 どうか、よろしくお願いしますm(_ _)m
- ベストアンサー
- その他MS Office製品
- マクロよ動け
VBA 難民です。 Excel で、左のセルが空白の場合、印刷文字を見えなくするつもりのマクロを作ってみましたが、知らん顔をされます。声の掛け方がまだよくわかってないのです。 こっちを向かせる方法を教えて下さい。よろしくお願いします。 Sub MacroWhiter() Dim a As Variant Dim b As Variant a = ActiveCell.Value b = ActiveCell.Offset(0, -1).Value '一つ左のセルの値 Range("B1").Activate 'ここから始める Do Until IsEmpty(ActiveCell.Value) '空きセルまで続ける If b = 0 Then 'ゼロの場合 ActiveCell.Font.Color = 2 '文字を白色にする ActiveCell.Offset(1, 0).Activate '下の行に移る End If Exit Do Loop '繰り返す a = ActiveCell.Value
- ベストアンサー
- オフィス系ソフト
- EXCEL2010のAVERAGE関数について
こんばんは。 EXCEL2010ですが、同じデーターを使ってワークシートでAVERAGE関数を使って求めた平均値とVBAでApplication.Averageで求めた平均値が違います。 扱っているデーターは少数点以下桁数が20桁数の数値です。 小数点第8位まではあっているのですが、その後は違います。 例 0.00000138786111098443 0.00000137878257235606 0.00000138192909756498 普通にセルにAVERAGE関数を使って平均値を出すと 0.00000138285759363516 VBAでApplication.Avarageを使って平均値を出すと 0.00000138489510427471 (変数のデーター型はDoubleを使用) これは誤差範囲になるのでしょうか? またそれが誤差であれば、どちらが真の値になるのでしょうか? ご教授頂きたくよろしくお願いします。 <追伸> なぜVBAで平均値を求めるかというと、 平均する数の値が固定ではなくCASE毎に変動するVBAを作っています。 上記のVBAを完成し答え合わせした所、違う結果になってしまいました。 いろいろ変数のデータ型を変えたりしたのですが、解決しませんでした。
- ベストアンサー
- その他MS Office製品
- Excel_VBAでセル参照式を変更するには?
あるシートのA1セルに、他シートセルの参照式を入れたく思います。 シート名は固定ですが、セルは下・右に移動させるため変数としています。 例えば、Sheet_1シートA列のrow_1を1-10までDO文でまわす場合に、行も数字で表記されてしまうため下記では参照式が成立しません。 cell_formula = "Sheet_1!" & row_1 & col_1 ActiveCell.Value = "=" & cell_formula 上記だと「cell_formula = Sheet_1!11」となってしまい、希望する「Sheet_1!A1」とならないのでエラーとなります。 間に変換式を入れることで、「Sheet_1!A1」と変えられないでしょうか? 説明が悪いようでしたら補足しますので、よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Excel2013>VBA>sendkeys動ず
Excel2013のVBAを使って自動更新をしようと思っています。 A B C 1 あ AA 0 2 い AB 1 3 う AC 0 4 え AA 1 5 お AA 0 上記のようにシート内にデータはあります。B列「AA」C列の「ゼロ」を更新してC列の値を「1」にしようとしたときに、ピボットテーブルを使ってみようと思いました。 ピボットテーブルにてB列の「AA」、C列の「ゼロ」を抽出表示しました。 A B C 1 あ AA 0 5 お AA 0 思っていたように1行目と5行目が抽出されました。 後はゼロを別の値(仮に「2」とします)に変更するときに、カーソルの移動がうまくいきませんでした。 Range("C1").End(xlDown).Select Do ActiveCell.Offset(0, 0) = "2" ActiveCell.Offset(-1, 0).Select If Len(ActiveCell.Offset(0, 0)) = 0 Then Exit Do End If Loop しかし、これではカーソルが「C4」に移動してしまいました。 ピボットテーブルでたたんでしまっても、カーソルは見えないセルに移動するようです。 そこで、下記のように変更しました。 Range("C1").End(xlDown).Select Do ActiveCell.Offset(0, 0) = "2" Application.SendKeys "{UP}" If Len(ActiveCell.Offset(0, 0)) = 0 Then Exit Do End If Loop これは、カーソルがまったく動かずに最初の地点にいたままでした。 そこで、次はTABで移動することにしました。 Range("C1").Select Selection.SpecialCells(xlCellTypeVisible).Select Do ActiveCell.Offset(0, 0) = "2" Application.SendKeys "{tab}" If Len(ActiveCell.Offset(0, 0)) = 0 Then Exit Do End If Loop これでもカーソルは動きませんでした。 どうにかしてsendkeysの動かし方、もしくは更新でもっとうまいやり方をご存知の方、是非教えてください。よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございました