Excel VBA質問箱 IV

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

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


1271 / 13645 ツリー ←次へ | 前へ→

【75322】各列の最終行の数値の合計 Kioyu 14/2/12(水) 13:41 質問[未読]
【75328】Re:各列の最終行の数値の合計 あきな 14/2/12(水) 19:56 発言[未読]
【75329】Re:各列の最終行の数値の合計 Kioyu 14/2/12(水) 21:09 発言[未読]
【75331】Re:各列の最終行の数値の合計 マナ 14/2/12(水) 22:54 発言[未読]
【75332】Re:各列の最終行の数値の合計 あきな 14/2/12(水) 23:38 回答[未読]
【75333】Re:各列の最終行の数値の合計 Kioyu 14/2/13(木) 0:26 お礼[未読]
【75334】Re:各列の最終行の数値の合計 Kioyu 14/2/13(木) 0:35 お礼[未読]

【75322】各列の最終行の数値の合計
質問  Kioyu  - 14/2/12(水) 13:41 -

引用なし
パスワード
   列ごとに数字を入れたセルの合計を、最終行に入れたのですが、次にそれぞれの合計を総数として合算しようとしても、SUM関数を利用したコードが作れない。
実力の無さを痛感して投稿しました。ご回答よろしくお願いします。

    あ    い    う    え    お
い    2     6     5     8     23
ろ    3     9     4     2     1
は    3     3     9     1     
に    4     3     3     3     
ほ    4     3         4     
へ    5     3             
と        6             
                    
Sub 領収書総数()
  Dim LastRow As Long
  Dim i As Integer, LastClm As Integer
  Dim SUM As Variant
 
    LastClm = ActiveSheet.Cells(1, 2).End(xlToRight).Column
  For i = 2 To LastClm
    i = ActiveSheet.Cells(1, i).Column
    LastRow = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row
    
   Range("H1").Value = Application.WorksheetFunction.SUM(Cells(LastRow,    i).Value & Cells(LastRow, LastClm).Value)
 
  Next i
End Sub

【75328】Re:各列の最終行の数値の合計
発言  あきな  - 14/2/12(水) 19:56 -

引用なし
パスワード
   回答ではありませんが、とりあえず気が付いたことです。

(1)Cellsプロパティの使い方が違うのでは?
         Cells(行インデックス, 列インデックス)

(2)変数iは必要? (変数LastClmと同じでは?)

(3)変数SUMは不要では? 
    (変数としてではなく、ワークシート関数のSumを使いたいのですよね?)

(4)Sum関数の中で「&」を使っているのはなぜ?

(5)合計を「最終行に入れたい」とのことですが、「各行の最終列」ということ?
    (項目「い」の行なら値「23」の右側、項目「は」の行なら値「1」の右側?)

【75329】Re:各列の最終行の数値の合計
発言  Kioyu  - 14/2/12(水) 21:09 -

引用なし
パスワード
   説明が不十分で申し訳ありません。

> (1)Cellsプロパティの使い方が違うのでは?
>          Cells(行インデックス, 列インデックス)

    Cells(1,2) は、「あ」の位置にしています。 

>(2)変数iは必要? (変数LastClmと同じでは?)

    ご指摘の通り、LastClmの変数に利用するだけで問題がないですね。


>(3)変数SUMは不要では? 
>     (変数としてではなく、ワークシート関数のSumを使いたいのですよ
ね?)

   実は、SUMとSumの使い分けが出来ない状況でした。 
>
> (4)Sum関数の中で「&」を使っているのはなぜ?

    どうしていいのか分からず、Cell間のつなぎに入れてみた次第です。
>
> (5)合計を「最終行に入れたい」とのことですが、「各行の最終列」ということ?
>     (項目「い」の行なら値「23」の右側、項目「は」の行なら値「1」の右側?) 

   各列の数字のあるセルの個数を最後のセルに入れています。
   5、6、3、4、1 の数値を変数により合計して、他のセルに表示することが目的としています。

説明不足でお手数をお掛けします。よろしくお願いします。

【75331】Re:各列の最終行の数値の合計
発言  マナ  - 14/2/12(水) 22:54 -

引用なし
パスワード
   各列の個数はどうやって求めているのですか。
COUNT関数でしょうか。
同じ関数で、列でなく全範囲の個数を求めればよいのでは?

【75332】Re:各列の最終行の数値の合計
回答  あきな  - 14/2/12(水) 23:38 -

引用なし
パスワード
   Kioyuさん、みなさん、こんにちは。

Kioyuさん、マナさんのおっしゃる通り、Count関数を使うのがベストだと思います。

が、作成されたプロシージャは、あと一歩!のところまで出来ているようなので、
最後まで完成させたい・・ですよね。こんな感じで、いかかでしょう。

合計値を入れるための変数[Ans]を追加しました。
MsgBoxの先頭にある(')をはずすと、[Ans]の動きが分かると思います。

Sub 領収書総数()
  Dim LastRow As Long
  Dim i As Integer, LastClm As Integer
  Dim Ans As Integer

  LastClm = ActiveSheet.Cells(1, 2).End(xlToRight).Column
  Ans = 0
  For i = 2 To LastClm
    LastRow = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row
    Ans = Ans + Cells(LastRow, i).Value
    'MsgBox "取得した数値=" & Cells(LastRow, i).Value & vbCr & _
        "合計値=" & Ans
  Next i
    Range("H1").Value = Ans
End Sub

【75333】Re:各列の最終行の数値の合計
お礼  Kioyu  - 14/2/13(木) 0:26 -

引用なし
パスワード
   有難うございました。
私にとっては難問の解決でした。

 LastRow = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row を使って
 セルの個数を出していたのですが、その後は、値に変更せざるを得ないと思っていました。
 それから、Ans の使い方は、まだ私には無理です。
 実際には、手作業でやっていた領収書の最終整理をマクロで使えるは嬉しい限りです。

早々と回答を頂き恐縮しています。
今後も、よろしくお願いいたします。

【75334】Re:各列の最終行の数値の合計
お礼  Kioyu  - 14/2/13(木) 0:35 -

引用なし
パスワード
   先程、あきなさんから回答を頂きました。
気遣い有難うございました。

推察どおり、COUNT関数を使い、各列の個数を求めていましたが、その後が力不足
でした。
今後も、ご指導の程よろしくお願いいたします。

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