Excel VBA質問箱 IV

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

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


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

【35654】任意の位置にある任意の行数のセル数値の合計 pochiman 06/3/9(木) 10:41 質問[未読]
【35659】Re:任意の位置にある任意の行数のセル数値... ponpon 06/3/9(木) 13:29 発言[未読]
【35661】Re:任意の位置にある任意の行数のセル数値... pochiman 06/3/9(木) 13:59 お礼[未読]
【35666】Re:任意の位置にある任意の行数のセル数値... ponpon 06/3/9(木) 18:34 発言[未読]
【35675】Re:任意の位置にある任意の行数のセル数値... ponpon 06/3/9(木) 22:23 発言[未読]
【35714】Re:任意の位置にある任意の行数のセル数値... pochiman 06/3/10(金) 20:21 お礼[未読]
【35791】Re:任意の位置にある任意の行数のセル数値... pochiman 06/3/13(月) 11:42 お礼[未読]

【35654】任意の位置にある任意の行数のセル数値の...
質問  pochiman  - 06/3/9(木) 10:41 -

引用なし
パスワード
   初めての投稿です。
初心者ですが、業務でどうしても必要なのでよろしくお願いいたします。
下記のような、開始行が任意の表の合計を、最終行の下に入れたいのです。

別のシートから抽出したデータを順番に貼り付けますので
開始行と行数が任意になってしまいます。

 (列)A、B、 〜M
(行) 文字 文字 数値
(行) 文字 文字 数値
(行) 文字 文字 数値
(行) 文字 文字 数値
         上記の合計値をM列の最終行の下に入れたい。    

データの開始行、最終行が固定されていないのですが、
どうしたらよいでしょうか?
よろしくお願いいたします。

【35659】Re:任意の位置にある任意の行数のセル数...
発言  ponpon  - 06/3/9(木) 13:29 -

引用なし
パスワード
   こんにちは。

>データの開始行、最終行が固定されていないのですが

これは、数値のある範囲は、全てと言うことでよいですか?

ならば、

M列が空欄か数値かを判断し、数値ならば、合計を最終行の下に
表示します。
シートは、アクティブシートで考えています。
関数を埋め込む方が早いかもしれません。

Sub test()
  Dim myR As Range
  Dim r As Range
  Dim myVal As Long
 
  Set myR = Range("M1", Range("M65536").End(xlUp))
  For Each r In myR
   If IsEmpty(r.Value) = False And IsNumeric(r.Value) Then
    myVal = rmyVal + Val(r.Value)
   End If
  Next
  Range("M65536").End(xlUp).Offset(1).Value = myVal

End Sub

【35661】Re:任意の位置にある任意の行数のセル数...
お礼  pochiman  - 06/3/9(木) 13:59 -

引用なし
パスワード
   ponponさんありがとうございます。

言葉足らずですみません。
M列にあるデータはすべて数値です。
お教えいただいたコードは、
1行目から、数値かどうかを判断しながら最終行に至るまで
加算を繰り返すということでしょうか?

違っていたらすみません。
もしそうだとしたら、言葉足らずでした・・すみません。

作業の内容ですが、
別のシートから、表(数は10から20位で抽出するまでは行数が不明な)をシートに間(空欄を3行)空けて張り込みをします。
それぞれの表の構成は同じです。

1つずつ表を抽出してM列の最後+1行下に合計を入れて、次の表を抽出して
張り込んでいきます。

従って合計をする開始行と最終行の数値は、張り込んでから取得することに
なると思いますが・・・。
SUM関数とかを使うこともできるのでしょうか?

よろしくお願いいたします。

【35666】Re:任意の位置にある任意の行数のセル数...
発言  ponpon  - 06/3/9(木) 18:34 -

引用なし
パスワード
   ▼pochiman さん:
>言葉足らずですみません。
>M列にあるデータはすべて数値です。
>お教えいただいたコードは、
>1行目から、数値かどうかを判断しながら最終行に至るまで
>加算を繰り返すということでしょうか?

そうです。

>作業の内容ですが、
>別のシートから、表(数は10から20位で抽出するまでは行数が不明な)をシートに間(空欄を3行)空けて張り込みをします。
>それぞれの表の構成は同じです。
>
>1つずつ表を抽出してM列の最後+1行下に合計を入れて、次の表を抽出して
>張り込んでいきます。

手動ですか? マクロですか?
マクロならコピーするときに行数が取得できると思いますが・・・

>従って合計をする開始行と最終行の数値は、張り込んでから取得することに
>なると思いますが・・・。
>SUM関数とかを使うこともできるのでしょうか?

手動で貼り付けを行い、行数も毎回違うとなると 私の力では難しいです。
考えてみますが、今日は時間がないので、識者の回答をお待ちください。

ポイントは3行続きの空白セルですね。
SpecialCellsで空欄セルを見つけ、・・・出来るかな???

【35675】Re:任意の位置にある任意の行数のセル数...
発言  ponpon  - 06/3/9(木) 22:23 -

引用なし
パスワード
   こんばんは。
時間ができたので、一応作ってみました。

データを3行空白をあけて、すべてコピペした後、実行してみてください。
うまくいくといいのですが・・・

Sub test()
  Dim i As Integer
  Dim myCnt As Integer
  Dim r As Range
  Dim myR As Range
  Dim myVal As Long
   
   On Error Resume Next
   myCnt = Columns("M:M").SpecialCells(xlCellTypeConstants, xlNumbers).Areas.Count
   If Err.Number <> 0 Then Exit Sub
    For i = 1 To myCnt
      Set myR = Columns("M:M").SpecialCells(xlCellTypeConstants, xlNumbers).Areas(i)
      For Each r In myR
        myVal = myVal + Val(r.Value)
      Next
      With myR.Resize(1).Offset(myR.Rows.Count)
       .Value = myVal
       .Interior.ColorIndex = 6
       .Offset(, -1).Value = "合計"
      End With
      myVal = 0
    Next
  End Sub

【35714】Re:任意の位置にある任意の行数のセル数...
お礼  pochiman  - 06/3/10(金) 20:21 -

引用なし
パスワード
   ponponさん。ありがとうございます。
週明けにさっそく試してみます。
他の業務でも同じような処理をしますので
とてもありがたいです。
では。

【35791】Re:任意の位置にある任意の行数のセル数...
お礼  pochiman  - 06/3/13(月) 11:42 -

引用なし
パスワード
   ponponさん。
ご回答ありがとうございました。
先ほど実行してみました。
一度にすべての貼り付けた表に合計が表示されました。

行数が違うのにきちんと表示出来るのは
すごいですね。
感激です!
頑張って次の処理にすすむことにします。
ありがとうございました。
またお世話になるかもしれませんが
よろしくお願いいたします。

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