重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

セルB5からF5に各列の平均値が入力されています。
B5からF5の値をH6からL6にも表示されるVBAを作りたい
のですが教えていただけないでしょうか?
関数でを使えば簡単ですが数式を表示したくないので
お願いします。

A 回答 (9件)

こんな感じでどうでしょう?



B5からF5を range("B5")等と、しても良いのですが、cell を、使えば変数としてそのまま整数値が使えますので、下記のようになります。
Range("B5")は、Cells(5,2)では、行列の順番が逆になります。

平均値をlong型として宣言しています。
Sub 値のコピー()
Dim i As Integer
Dim heikin As Long

For i = 2 To 6
Worksheets(1).Cells(6, i + 6).Value = Worksheets(1).Cells(5, i).Value
Next i

End Sub
    • good
    • 0

こんにちは。



数式を表示させたくないのでしたらVBAを使わなくても単にシートを保護するだけでいいのでは?

----------------------------------------------
式のあるセルを右クリック > セルの書式設定

書式設定ダイアログの「保護」タブクリック

「ロック」と「表示しない」にチェックを入れOKボタン

メニューバーの「ツール」 >「保護」 >「シートの保護」

-------------------------------------------------

これで式は表示されないですよね。
勘違いでしたらご容赦願います。
以上です。
    • good
    • 0

>関数でを使えば簡単ですが数式を表示したくないので


ということは、こういうことかな?

B5からF5 に入力、または、その該当する領域に、F2を押し、Enterで、イベントが起動します。不要なら、 If 文 1行を削除すれば、どこでもイベント起動しますが、入力すると常にイベント起動します。

'シートモジュール(該当シートのモジュールペイン;例 Sheet1(Sheet1))

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B5:F5")) Is Nothing Then Exit Sub
 Application.EnableEvents = False
 Range("H6:L6").Value = Range("B5:F5").Value
 Application.EnableEvents = True
End Sub

なお、Range オブジェクトは、Worksheet の配下ですから、アクティブシートの場合は、Worksheet の記述は必要ありません。
    • good
    • 0

Sub cpy()



Range("B5:F5").Copy
Range("H6:L6").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("A1").Select

End Sub
    • good
    • 0

ツール→マクロ→マクロの自動記録で


マクロ名を付けて(例えば、平均コピーとか・・・) → OK
マクロの自動記録が始まりますので、

B5~F5をコピー → H6を右クリック → 形式を選択して貼り付けで値を選択 → OK

で、後は、必ずマクロの自動記録を終了してください。
    • good
    • 0

NO1です。


済みません VBAでしたね。
セルに代入するだけの事ではないのですか?

マクロで良いなら
cells(6,8)=cells(5,2)
....
cells(6,12)=cells(5,6)
    • good
    • 0

こんな感じが基本パターンです。


同じシートの場合
'セルの属性もすべてコピー
 Range("H6").Copy Range("B5")
'セルの値だけをコピー
 Range("H6") = Range("B5")
別のシートの場合
'セルの属性もすべてコピー
 worksheets("Sheet2").Range("H6").Copy worksheets("Sheet1").Range("B5")
'セルの値だけをコピー
 worksheets("Sheet2").Range("H6") = worksheets("Sheet1").Range("B5")

作り方は「ツール」→「マクロ」→「マクロ」→「作成」
で上記のコードを入力します。
    • good
    • 0

これでどうでしょう?


標準モジュールでなく、各シートのモジュールに記述してください。

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
  Range("B5:F5").Copy
  Range("H6").PasteSpecial xlPasteValues
  Application.CutCopyMode = False
  Target.Select
  Application.EnableEvents = True
End Sub
    • good
    • 0

H6に=B5または+B5


同等にしてゆき
L6に=F5または+F5
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!