[[20180801114412]] 『count関数をVBAで使いたい』(ぽんとりん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『count関数をVBAで使いたい』(ぽんとりん)

test.xlsxファイルのA列にあるデータ数(シートはひとつしかありません)をcount関数を使って取得したい。
以下のプログラムですが、cnt変数は0となりA列のデータ数を数えてくれません。エラーもでません。以前はこのプログラムで動いていました。ファイルの保存場所をネットワークドライブからCドライブに変えたところうまくいかなくなりました。今まで動いていた環境がなくなってしまったので、元に戻して動く状況も作れません。ご指導お願いします。

Dim targetBook As Workbook

    'csvファイルをエクセルで開く
    Set targetBook = Workbooks.Open("C:\test.csv")
    '現在のエクセルファイルの削除
    Kill "C:\test.xlsx"
    'xlsx形式で保存
    targetBook.SaveAs Filename:="C:\test.xlsx",FileFormat:=xlOpenXMLWorkbook
Dim cnt As Long
    cnt = WorksheetFunction.Count(ActiveSheet.Range("A:A"))
    targetBook.Close

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 >cnt = WorksheetFunction.Count(ActiveSheet.Range("A:A"))
 を
 cnt = WorksheetFunction.Count(targetBook.Worksheets(1).Range("A:A"))
 としたらどうなるだろうか?
(ねむねむ) 2018/08/01(水) 12:25

ねむねむ様
ありがとうございます。
やってみましたが、cntは0のままでした。

少しわかったことがあります。
test.xlsxファイルでcount(a:a)で表示させたところ、なぜか0となってしまいます。
count(b:b)だとb列はカウントされます。
そちらを少し調べてみます。
(ぽんとりん) 2018/08/01(水) 12:37


 COUNT関数は数値の数を数える関数だが(文字列も含めて数えるのはCOUNTA関数)A列は数値なのだろうか?
(ねむねむ) 2018/08/01(水) 12:40

ねむねむ様
その通りでした。testファイルのA列が数値から文字列に変わっていました。
ありがとうございました
(ぽんとりん) 2018/08/01(水) 12:47

余計なお世話かもしれませんが、見づらかったのでインデント付け&ちょっと修正してみました。
ヒントになれば・・(未テストなので実行時エラーがでたらごめんなさい。)

    Sub test()
        Dim WF As Object: Set WF = WorksheetFunction
        Const MyFile As String = "C:\test"
        Dim cnt As Long

        With Workbooks.Open(MyFile & ".csv")

            'killしなくても上書き保存すればよいだけでは?
            'あと拡張子は省略してもいいかも
            Application.DisplayAlerts = False
            .SaveAs _
                Filename:=MyFile, _
                FileFormat:=xlOpenXMLWorkbook
            Application.DisplayAlerts = True

            cnt = WF.Count(.Worksheets(1).Range("A:A"))
            MsgBox .Name & "のA列を対象にCount関数を実行したところ" & vbCrLf & cnt & " でした"

            .Close

        End With
    End Sub
(もこな2) 2018/08/01(水) 15:27

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.