Excel VBA質問箱 IV

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

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


75768 / 76738 ←次へ | 前へ→

【5402】Re:おしえてください。
回答  Hirofumi E-MAIL  - 03/5/10(土) 9:10 -

引用なし
パスワード
   マクロで集計だけすれば善いなら
こんな、かな?
結果は、D列に書き込んでます

Public Sub TestCalc()

  Dim i As Long
  Dim lngTop As Long
  Dim lngEnd As Long
  Dim vntData As Variant
  Dim vntResult As Variant
  Dim vntSumA As Variant
  Dim vntSumB As Variant
  
  'データ先頭行
  lngTop = 4
  'データ最終行取得
  lngEnd = Cells(65536, 1).End(xlUp).Row
  '結果書き込み用配列の確保
  ReDim vntResult(1 To (lngEnd - lngTop + 1), 1 To 1)
  
  'データを配列に取得
  vntData = Range(Cells(lngTop, 1), Cells(lngEnd, 3)).Value
  'A列の合計とB列の"S"を除く合計の取得
  For i = 1 To lngEnd - lngTop + 1
    'A列の合計
    vntSumA = vntSumA + vntData(i, 1)
    'B列の"S"を除く合計
    If vntData(i, 2) <> "S" Then
      vntSumB = vntSumB + vntData(i, 2)
    End If
  Next i
  
  '集計用配列に計算結果を代入
  For i = 1 To lngEnd - lngTop + 1
    vntResult(i, 1) = vntSumA * (vntSumB + vntData(i, 3))
  Next i

  '集計用配列をセルに書き込み
  Range(Cells(lngTop, 4), Cells(lngEnd, 4)).Value = vntResult
  
End Sub
7 hits

【5370】おしえてください。 Coo 03/5/8(木) 21:12 質問
【5372】Re:おしえてください。 Nakamura 03/5/8(木) 23:28 回答
【5373】Re:おしえてください。 Coo 03/5/9(金) 2:38 発言
【5378】Re:おしえてください。 Jaka 03/5/9(金) 11:10 回答
【5380】Re:おしえてください。 Nakamura 03/5/9(金) 12:41 発言
【5398】Re:おしえてください。 Coo 03/5/9(金) 23:56 質問
【5402】Re:おしえてください。 Hirofumi 03/5/10(土) 9:10 回答
【5404】Re:おしえてください。 Coo 03/5/10(土) 14:52 質問
【5406】Re:おしえてください。 Hirofumi 03/5/10(土) 15:56 回答
【5438】Re:おしえてください。 Coo 03/5/13(火) 23:25 お礼

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