[[20200911000430]] 『SUM関数で文字列が無視されるのをVBAで実現するに』(VBAビギナー) ページの最後に飛ぶ

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

 

『SUM関数で文字列が無視されるのをVBAで実現するには?』(VBAビギナー)

お世話になります。

セルA1〜E5にランダムで数字が入っており、F列に行ごとの和を出すとします。
⇒関数だと【F1=SUM(A1:E1)】【F2=SUM(A2:E2)】・・・

これはVBAだと
Sub test()
Dim i As Long

    For i = 1 To 5
        Cells(i, 6) = Cells(i, 1) + Cells(i, 2) + Cells(i, 3) + Cells(i, 4) + Cells(i, 5)
    Next i
End Sub

上記でできることが分かりました。

では、例えばC1セルに「無」という文字列が入っており、だけど文字列を除いた数字の和を求めたい場合はどうすれば良いのでしょうか?
上記の書き方ではエラーになってしまい、困っています。

もちろん、これはVBAなど使わず素直にSUM関数でやったほうが良いのは承知しているのですが…
どうしてもVBAでの書き方が知りたくなりました。

どうぞ、よろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:unknown >


ワークシートファンクションを使う・・・では解決にならないのでしょうね。
IsNumeric関数で数値っぽいときは足し算をして、数値っぽくないときは無視をするという処理でいかがでしょうか。

Sub test()
Dim i As Long,j As Long

    For i = 1 To 5
        Cells(i, 6) = 0
        For j = 1 to 5
            If IsNumeric(Cells(i, j) Then
                Cells(i, 6) = Cells(i, 6) + Cells(i, j)
            End if
        Next j
    Next i
End Sub
(高橋) 2020/09/11(金) 00:44

 VBAですからねぇ。(「A」ってエクセルの事です)

 VBAでも、ワークシート関数は有効活用した方がいいと思う。

(半平太) 2020/09/11(金) 09:29


 >文字列を除いた数字の和

 これの意味は、文字の数字は無視で良いんですか?
 数値のみ対象?
 この辺しっかり書いた方が良いですよ。
 数値と文字の数字を分けてくれないと
 数値と数字(文字)の区別できてますか?

 SUM関数は、数値のみが対象ですが、
 IsNumeric で判定をすると、文字の数字は(全角含む)通ってしまいます。
 この判定で出てくるのが、やっぱりワークシート関数のIsnumber。
 やっぱり、SUM関数を使った方が簡単ですかね。
(Why) 2020/09/11(金) 10:14

コメント返信:

[ 一覧(最新更新順) ]


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