[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『WorksheetFunction.CountAで空白のはずが1をカウントしてしまう。』(コウコウ)
G5から指定した数の範囲が空白かどうか調べるマクロを作りました。
マクロで行う作業の中の一部です。
range("G5")のセルを基準に、「指定」が2の場合、Range("G5:H5")の範囲で空白ではない数を数えようと思っています。
しかし、以下の記述では、Range("G5:H5")の範囲が空白にもかかわらず、W = 1 という結果になってしまいます。
なにか不手際があるのでしょうか?
ご教授いただければ幸いです。
Sub テスト()
指定 = 2
Range("G5").Select W = WorksheetFunction.CountA(Range(ActiveCell.Address) & ":" & Range(ActiveCell.Offset(0, 指定 - 1).Address))
Range("P1").Value = W
End Sub
< 使用 Excel:Excel2003、使用 OS:WindowsXP >
CountA関数は、数式で "" が返っているセルがあるとそれもカウントしますよ? (seiya) 2014/01/14(火) 17:32
Sub テスト()
指定 = 2
Range("G5:H5").Select
Selection.ClearContents Range("G5").Select W = WorksheetFunction.CountA(Range(ActiveCell.Address) & ":" & Range(ActiveCell.Offset(0, 指定 - 1).Address)) Range("P1").Value = W End Sub
W = WorksheetFunction.CountA(Range(ActiveCell.Address) & ":" & Range(ActiveCell.Offset(0, 指定 - 1).Address)) という記述から、下のテスト2の如く、WorksheetFunction.CountA(Range("G5:H5")) に戻すと、正しく0とカウントしました。
WorksheetFunction.CountA(Range(ActiveCell.Address) & ":" & Range(ActiveCell.Offset(0, 指定 - 1).Address))’・・・という記述が、WorksheetFunction.CountA(Range("G5:H5")) に置き換わらないようです。
Sub テスト2()
Range("G5:H5").Select Selection.ClearContents 指定 = 2 Range("G5").Select W = WorksheetFunction.CountA(Range("G5:H5"))
Range("P1").Value = W
End Sub
(コウコウ) 2014/01/14(火) 17:55
あまり深く読んでいませんでしたね
W = WorksheetFunction.CountA(Range(ActiveCell, ActiveCell.Offset(0, 指定 - 1)))
ですか? (seiya) 2014/01/14(火) 18:59
W = WorksheetFunction.CountA(Range(ActiveCell.Address & ":" & ActiveCell.Offset(0, 指定 - 1).Address))
でしょ
(あかさな) 2014/01/14(火) 19:25
この場合 Address/Offset よりも Resize プロパティで指定した方が簡単
W = WorksheetFunction.CountA(ActiveCell.Resize(, 指定)) (seiya) 2014/01/14(火) 19:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.