Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1577 / 13644 ツリー ←次へ | 前へ→

【73338】2つ飛びの合計を求める式の作成 ブーチー 12/12/21(金) 17:31 質問[未読]
【73339】Re:2つ飛びの合計を求める式の作成 ブーチー 12/12/21(金) 17:58 質問[未読]
【73340】Re:2つ飛びの合計を求める式の作成 UO3 12/12/21(金) 18:26 発言[未読]
【73343】Re:2つ飛びの合計を求める式の作成 ブーチー 12/12/21(金) 22:06 発言[未読]
【73345】Re:2つ飛びの合計を求める式の作成 UO3 12/12/22(土) 0:31 発言[未読]
【73357】Re:2つ飛びの合計を求める式の作成 ブーチー 12/12/24(月) 11:23 お礼[未読]

【73338】2つ飛びの合計を求める式の作成
質問  ブーチー  - 12/12/21(金) 17:31 -

引用なし
パスワード
   ある範囲のセルを横方向に選択しています。
その範囲の先頭は3、最後は2という数字が入っています。
3 4 5 54 33 4 34 2

この範囲において、2つ飛びの合計を求める式を作るマクロを教えてください。
=3+54+34を計算することになります。
=g6+g9+g12という式を作成することになります。(セルの行と列は例です)
作られた式は、選択している範囲のひとつ右側のセルに記述するものとします。

1つ飛びの合計や3つ飛びの合計などにも対応できるように、飛び数は変数で指定したコードを希望します。

質問ばかりしていますが、お願いいたします。

【73339】Re:2つ飛びの合計を求める式の作成
質問  ブーチー  - 12/12/21(金) 17:58 -

引用なし
パスワード
   すみません。補足します。

>3 4 5 54 33 4 34 2

このデータは1例です。
選択したデータの数が何個かは不定です。

【73340】Re:2つ飛びの合計を求める式の作成
発言  UO3  - 12/12/21(金) 18:26 -

引用なし
パスワード
   ▼ブーチー さん:

以下のようなことでしょうか?

Sub Sample()
  Dim i As Long
  Dim n As Long
  
  If Selection.Areas.Count > 1 Then
    MsgBox "複数領域の選択はできません"
    Exit Sub
  End If
  
  If Selection.Rows.Count > 1 Then
    MsgBox "複数行の選択はできません"
    Exit Sub
  End If
  
  For i = 1 To Selection.Count Step 2
    n = n + Selection.Cells(i)
  Next
  
  MsgBox "答えは " & n & " です"
  
End Sub

【73343】Re:2つ飛びの合計を求める式の作成
発言  ブーチー  - 12/12/21(金) 22:06 -

引用なし
パスワード
   ▼UO3 さん 回答ありがとうございます。
合計の値を求めるのではなく、合計の値を求める式をセルに記述するマクロを希望しています。
式の記述は、選択しているセルのひとつ右側に記述するものとします

2  3  5  2  1  =G3+G5+G7
                ↑
               この式を記述したい

【73345】Re:2つ飛びの合計を求める式の作成
発言  UO3  - 12/12/22(土) 0:31 -

引用なし
パスワード
   ▼ブーチー さん:

それでは

Sub Sample2()
  Dim i As Long
  Dim n As Long
  Dim v() As String
  Dim c As Range
  Dim x As Long
  
  If Selection.Areas.Count > 1 Then
    MsgBox "複数領域の選択はできません"
    Exit Sub
  End If
 
  If Selection.Rows.Count > 1 Then
    MsgBox "複数行の選択はできません"
    Exit Sub
  End If
 
  ReDim v(1 To WorksheetFunction.RoundUp(Selection.Count / 2, 0))
  
  For i = 1 To Selection.Count Step 2
    x = x + 1
    v(x) = Selection.Cells(i).Address
  Next

  Selection.Cells(1).Offset(, Selection.Count).Formula = "=" & Join(v, "+")
 
End Sub

【73357】Re:2つ飛びの合計を求める式の作成
お礼  ブーチー  - 12/12/24(月) 11:23 -

引用なし
パスワード
   ▼UO3 さん ありがとうございました。
期待通りに動いてくれました。


自分のために一部変更したコードを載せておきます。
Sub 二個飛合計式の作成()
  Dim i As Long
  Dim n As Long
  Dim v() As String
  Dim c As Range
  Dim x As Long
  Dim m As Long
 
  m = 2 '2個飛びの合計
  If Selection.Areas.Count > 1 Then
    MsgBox "複数領域の選択はできません"
    Exit Sub
  End If

  If Selection.Rows.Count > 1 Then
    MsgBox "複数行の選択はできません"
    Exit Sub
  End If

  ReDim v(1 To WorksheetFunction.RoundUp(Selection.Count / (m + 1), 0))
 
  For i = 1 To Selection.Count Step m + 1
    x = x + 1
    v(x) = Selection.Cells(i).Address(RowAbsolute:=False, ColumnAbsolute:=False)
  Next

  Selection.Cells(1).Offset(, Selection.Count).Formula = "=" & Join(v, "+")

End Sub

1577 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free