Excel VBA質問箱 IV

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

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


2380 / 13646 ツリー ←次へ | 前へ→

【68377】どこが間違っているのか分かりません。 ガラガー 11/3/1(火) 0:10 質問[未読]
【68378】Re:どこが間違っているのか分かりません。 kanabun 11/3/1(火) 1:18 発言[未読]
【68381】Re:どこが間違っているのか分かりません。 kanabun 11/3/1(火) 10:48 発言[未読]
【68380】Re:どこが間違っているのか分かりません。 ちーぱっく 11/3/1(火) 9:31 発言[未読]
【68382】Re:どこが間違っているのか分かりません。 kanabun 11/3/1(火) 11:42 発言[未読]

【68377】どこが間違っているのか分かりません。
質問  ガラガー  - 11/3/1(火) 0:10 -

引用なし
パスワード
   コードを作成したのですが、間違った数値が返ってきてしまいます。
どこが間違っているのか分からず困っています。
お力を貸していただければと思います。

B9セル以下のB列の奇数番号(B9,B11,B13・・・)に任意の数字(1〜9)が入っています。
その数字が3または5の場合、その行のH列からP列の数値が入っているセルの数をカウントしたく思っています。
(H列からP列には空欄または時刻のデータが入っています。)
また、シートが20枚ほどあり、すべてのシートで同じ作業を行い、最終的には別シートを作成し、A列にシート名、B列にカウントしたセルの数を表示させます。

ちなみに全シート、データはA列からP列、1行目から120行目くらいまで入っています。(空欄のセルもあります。)

以下がコードです。

Sub Try1()
  Dim sumSheet As Worksheet
  Dim ws As Worksheet
  Dim i As Long, LastRow As Long
  Dim n As Long, nCount As Long
  
   '集計シートの作成
   With ActiveWorkbook.Worksheets
     On Error Resume Next
     Set sumSheet = .Item("sum")
     On Error GoTo 0
     If sumSheet Is Nothing Then
         Set sumSheet = .Add(After:=.Item(.Count))
         sumSheet.Name = "sum"
     Else
       sumSheet.UsedRange.ClearContents
     End If
     ReDim res(1 To .Count - 1, 1 To 2)
  End With
  
   '集計
   n = 0
   For Each ws In ActiveWorkbook.Worksheets
     If ws.Name <> "sum" Then
       With ws
         LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
         nCount = 0
         For i = 9 To LastRow Step 2
            Select Case .Cells(i, 2).Value
             Case 3,5
               nCount = nCount + WorksheetFunction.Count(.Cells(i, 8).Resize(, 9))
            End Select
         Next
         n = n + 1
         res(n, 1) = .Name
         res(n, 2) = nCount
       End With
     End If
   Next
   sumSheet.Range("A1").Resize(n, 2).Value = res
   sumSheet.Activate
   MsgBox "集計しました"
End Sub


VBA初心者です。よろしくお願いいたします。

【68378】Re:どこが間違っているのか分かりません。
発言  kanabun  - 11/3/1(火) 1:18 -

引用なし
パスワード
   ▼ガラガー さん:
>コードを作成したのですが、間違った数値が返ってきてしまいます。
>どこが間違っているのか分からず困っています。

目視で数えた数と マクロで数えた数の差に 何か傾向はないですか?


どうしてあちらで続けられなかったのかな?
ht tp://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+201102/11020064.txt

【68380】Re:どこが間違っているのか分かりません。
発言  ちーぱっく  - 11/3/1(火) 9:31 -

引用なし
パスワード
   「コードを作成した」というけど
他の掲示板での回答者のコードじゃん。

どうして?

【68381】Re:どこが間違っているのか分かりません。
発言  kanabun  - 11/3/1(火) 10:48 -

引用なし
パスワード
   >▼ガラガー さん:
>
>目視で数えた数と マクロで数えた数の差に 何か傾向はないですか?
>
こちらにはそちらのシート自体がないので、デバッグ不可能なことは
分かりますか?

結果シート(sum)に、たとえば
Sheet1  15
Sheet2  9
Sheet3  20
・・・
とマクロでの集計結果が表示されたとき、その隣のセルに
目視でカウントした結果を書き込んでみてください。

Sheet1  15   13
Sheet2  9    7
Sheet3  20   18
・・・
のようになるのか?(マクロのほうが多い)

Sheet1  15   18
Sheet2  9    11
Sheet3  20   24
・・・
のようになるのか?(手集計のほうが多い)

あるいは シートにより結果はまちまちで 目視のほうが多いとか
マクロ結果のほうが多いとか の傾向はないのか?

【68382】Re:どこが間違っているのか分かりません。
発言  kanabun  - 11/3/1(火) 11:42 -

引用なし
パスワード
   ▼ガラガー さん:

>数値が入っているセルの数をカウントしたく

とのことでしたので、

> nCount = nCount + WorksheetFunction.Count(.Cells(i, 8).Resize(, 9))

としましたが、実験的にここを

nCount = nCount + WorksheetFunction.CountA(.Cells(i, 8).Resize(, 9))

としたらどうなりますか?
このばあい、数値でなくてもとにかく値が入っているセルの数が
カウントされます。

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