Excel VBA質問箱 IV

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

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


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

【52103】[無題] 新参者 07/10/21(日) 11:13 質問[未読]
【52112】オートフィルターでの行の取得方法 新参者 07/10/21(日) 15:23 質問[未読]
【52113】Re:オートフィルターでの行の取得方法 じゅんじゅん 07/10/21(日) 15:28 発言[未読]
【52132】Re:オートフィルターでの行の取得方法 新参者 07/10/22(月) 20:42 質問[未読]
【52133】Re:オートフィルターでの行の取得方法 statis 07/10/22(月) 23:29 回答[未読]
【52139】Re:オートフィルターでの行の取得方法 新参者 07/10/23(火) 21:20 質問[未読]
【52140】Re:オートフィルターでの行の取得方法 statis 07/10/23(火) 23:28 回答[未読]
【52143】Re:オートフィルターでの行の取得方法 新参者 07/10/24(水) 16:42 お礼[未読]

【52103】[無題]
質問  新参者  - 07/10/21(日) 11:13 -

引用なし
パスワード
   行番号
 1   日付     計画  実績 稼働率 歩留 その他
13  2007.07.12  3000  1500  50   70  10
15  2007.07.15  5000  4500  90   89  39
16  2007.07.17  6000  5700  95   80  30
18  2007.07.21  5500  5400  98   88  45


データがA列(日付)を基準としてデータベースとして入力されています。
上記のようにオートフィルターで7月分を抽出しました。
そこで抽出された範囲が13行から18行です。この下には何も入力されていません。
そこでこの18行目の下(19行目)に1か月分の合計(計画、実績)平均(稼働率、
歩留)を出したいと思います。
合計、平均を出した後順次、次月のデータを入力したいと思います。
最終行は("a65536").end(xlup).row で行を数えることができますが、フィルター選択での上部の行(13行目)はどうやって数えるのでしょうか?
ほかのシートでもその方法を使いたいのです。

あと可視セルの行こうな使い方を教えてください。

初心者者で散々考えましたがわからず投稿しました。お願いします。
13行目はどうやって数えるのでしょうか?

【52112】オートフィルターでの行の取得方法
質問  新参者  - 07/10/21(日) 15:23 -

引用なし
パスワード
   ▼新参者 さん:
>行番号
> 1   日付     計画  実績 稼働率 歩留 その他
> 13  2007.07.12  3000  1500  50   70  10
> 15  2007.07.15  5000  4500  90   89  39
> 16  2007.07.17  6000  5700  95   80  30
> 18  2007.07.21  5500  5400  98   88  45
>
>
>データがA列(日付)を基準としてデータベースとして入力されています。
>上記のようにオートフィルターで7月分を抽出しました。
>そこで抽出された範囲が13行から18行です。この下には何も入力されていません。
>そこでこの18行目の下(19行目)に1か月分の合計(計画、実績)平均(稼働率、
>歩留)を出したいと思います。
>合計、平均を出した後順次、次月のデータを入力したいと思います。
>最終行は("a65536").end(xlup).row で行を数えることができますが、フィルター選択での上部の行(13行目)はどうやって数えるのでしょうか?
>ほかのシートでもその方法を使いたいのです。
>
>あと可視セルの行こうな使い方を教えてください。
>
>初心者者で散々考えましたがわからず投稿しました。お願いします。
>13行目はどうやって数えるのでしょうか?

【52113】Re:オートフィルターでの行の取得方法
発言  じゅんじゅん  - 07/10/21(日) 15:28 -

引用なし
パスワード
   1行目は項目行となれば、次に表示されている行数と言う事で、

MsgBox Range("A:A").SpecialCells(xlCellTypeVisible).Areas.Item(2).Row
こう言った事でしょうか?

*抽出で”すべて”が表示されているとエラーになりますけど。

【52132】Re:オートフィルターでの行の取得方法
質問  新参者  - 07/10/22(月) 20:42 -

引用なし
パスワード
   ▼じゅんじゅん さん:
>1行目は項目行となれば、次に表示されている行数と言う事で、
>
>MsgBox Range("A:A").SpecialCells(xlCellTypeVisible).Areas.Item(2).Row
>こう言った事でしょうか?
>
>*抽出で”すべて”が表示されているとエラーになりますけど。
ほか
じゅんじゅんさん 早速のお答えありがとうございます。
会社で試したところ行が取得できました。取得した行から最終行までの
合計と平均値がうまくできました。ありがとうございました。

でもこのコードの意味がよく理解できていません。
range("a:a")はA列で、specialcells(xlcelltypevisible)はたぶん可視セルだと思いますが、その後のコードがわかりません。
また、可視セルの使い方、用途なども教えてくださいませんか?

【52133】Re:オートフィルターでの行の取得方法
回答  statis  - 07/10/22(月) 23:29 -

引用なし
パスワード
   こんにちは
これで如何かな?
*注意:2行目のみ抽出された場合はErrがでますのでErr処理も必要です。

Sub test()
Dim R As Range
If Range("A65536").End(xlUp).Row > 1 Then
  Set R = Range("C2", Range("B65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
  MsgBox Application.Sum(R) & Chr(10) & _
     Application.Sum(R.Offset(, 1)) & Chr(10) & _
     R.Offset(, 1) / R * 100 & "%"
End If
End Sub

【52139】Re:オートフィルターでの行の取得方法
質問  新参者  - 07/10/23(火) 21:20 -

引用なし
パスワード
   ▼statis さん:
>こんにちは
>これで如何かな?
>*注意:2行目のみ抽出された場合はErrがでますのでErr処理も必要です。
>
>Sub test()
>Dim R As Range
>If Range("A65536").End(xlUp).Row > 1 Then
>  Set R = Range("C2", Range("B65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
>  MsgBox Application.Sum(R) & Chr(10) & _
>     Application.Sum(R.Offset(, 1)) & Chr(10) & _
>     R.Offset(, 1) / R * 100 & "%"
>End If
>End Sub
statisさんありがとうございます。
msgboxのあとが理解できませんでした。
できれば、説明文をお願いできませんでしょうか。

【52140】Re:オートフィルターでの行の取得方法
回答  statis  - 07/10/23(火) 23:28 -

引用なし
パスワード
   こんにちは
下記に訂正してください。
MsgBox Application.Sum(R) & Chr(10) & _
     Application.Sum(R.Offset(, 1)) & Chr(10) & _
     Application.Sum(R.Offset(, 1)) / Application.Sum(R) * 100 & "%"

解説:
Application.Sum(R)→C列の抽出した可変セルの合計を算出
Application.Sum(R.Offset(, 1)) →D列の抽出した可変セルの合計を算出
Chr(10)→改行
Application.Sum(R.Offset(, 1)) / Application.Sum(R) * 100 & "%"→
C列の抽出した可変セルの合計をD列の抽出した可変セルの合計で割り100を掛け
%を算出

【52143】Re:オートフィルターでの行の取得方法
お礼  新参者  - 07/10/24(水) 16:42 -

引用なし
パスワード
   ▼statis さん:
>こんにちは
>下記に訂正してください。
>MsgBox Application.Sum(R) & Chr(10) & _
>     Application.Sum(R.Offset(, 1)) & Chr(10) & _
>     Application.Sum(R.Offset(, 1)) / Application.Sum(R) * 100 & "%"
>
>解説:
>Application.Sum(R)→C列の抽出した可変セルの合計を算出
>Application.Sum(R.Offset(, 1)) →D列の抽出した可変セルの合計を算出
>Chr(10)→改行
>Application.Sum(R.Offset(, 1)) / Application.Sum(R) * 100 & "%"→
>C列の抽出した可変セルの合計をD列の抽出した可変セルの合計で割り100を掛け
>%を算出

statisさんありがとうございました。
大変参考になりました。会社で上記のコードを参考に合計と稼働率を最終行に
入れることができました。
じゅんじゅんさん、statisさんありがとうございました。
今後も質問するかと思いますが、よろしくお願いします。

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