[[20140729115033]] 『文字列が入力されているセルのみの合計を返すには』(わたし) ページの最後に飛ぶ

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

 

『文字列が入力されているセルのみの合計を返すには』(わたし)

A1 文字列
A2 fx(計算式)
A3 
A4 文字列
A5 fx(計算式)
A6
A7 文字列
A8 fx(計算式)  が入力してあって、

 範囲A1からA8を指定して文字列が入力してあるセルの数の合計 3
 を返すことは出来るでしょうか・・?

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


 マクロのユーザ定義関数になりますが、適当なセルに

 設定は VBE で 挿入⇒標準モジュール、 下記コードをコピー、VBE を閉じて、
 適当なセルに =CountNonFormulaA(A1:A8)

 以下コードです。
 Function CountNonFormulaA(rng As Range)
    CountNonFormulaA = 0
    Dim r As Range
    For Each r In rng
        If r.HasFormula = False And r.Value <> "" Then CountNonFormulaA = CountNonFormulaA + 1
    Next
 End Function

(Mook) 2014/07/29(火) 12:42



=COUNTIF(A1:A8,"*")
みたいなのもありそう、途中から表示形式を値から文字列にすると反映されないから、上の方がいいかも
(date) 2014/07/29(火) 13:11

 > 範囲A1からA8を指定して文字列が入力してあるセルの数の合計 3
 > を返すことは出来るでしょうか・・?

 そのデータで 3 を返したいのなら
 セルに
 =CountSpecial(A1:A8)

 標準モジュールへ

 Function CountSpecial(rng As Range) As Long
    With Application
        CountSpecial = UBound(Filter(.Transpose(rng.Formula), "=", 0)) - .CountBlank(rng) + 1
    End With
End Function
(seiya) 2014/07/29(火) 13:14

 CountSpecial だと計算式の結果がブランクになっていると、値がおかしくないですか?
 そういう式が無い前提ならいいのかもしれませんが。
(Mook) 2014/07/29(火) 13:26

 > CountSpecial だと計算式の結果がブランクになっていると、値がおかしくないですか?
 確かに...それは、考慮しなかった...

 Function CountSpecial(rng As Range) As Long
    Dim e
    For Each e In rng.Formula
        If (Left$(e, 1) <> "=") * (e <> "") Then CountSpecial = CountSpecial + 1
    Next
End Function
(seiya) 2014/07/29(火) 14:13

Mook様、seiya様
ご回答有難うございます。
ですが、私、マクロを組む域までのレベルに達していないため、せっかくのご回答の内容を理解できず申し訳ありません。

 COUNT、COUNTA系の統計関数はないでしょうか…?
 
 (ちなみにA3、A6は空白のセルです。)
(わたし) 2014/07/29(火) 15:14


 そうすると作業列が必要だと思いますよ。
 B1=IF(OR(A1="",TYPE(A1)<>2),0,1)
 B8までコピー
 C1=SUM(B1:B8)

(稲葉) 2014/07/29(火) 15:21


 A3やA6が数式で""が返っていないまったくの空白セルで、数式の結果が数値でしたら
 COUNTAからCOUNTを引けばいいと思いますよ。

 式がどんなもの入っているかわからないし空白もどんな処理をしているかわからないので
 皆さん色々考えて下さっているだけです。
(コナミ) 2014/07/29(火) 15:46

稲葉様、コナミ様
 
 ありがとうございます!!

 作業列を作ってIFで飛ばして・・・漠然といろいろ考えてましたが・・・うまくいきませんでした。
 作業列を作ってSUMか、COUNTAからCOUNTを引くかで、正しい値が返るかやってみます。うまくかないようでしたらA列の計算式の内容をみて頂いてまたご教示方お願いいたします。
(わたし) 2014/07/29(火) 16:07


 数式が返す値は文字列? 数値?

 数値なら、これ(↓)を試した結果はどうだったのかな?
 > =COUNTIF(A1:A8,"*")

 数値以外に空白文字列を返す場合があるんだったら

 =COUNTIF(A1:A8,"?*")

 こんな感じかな?
(笑) 2014/07/29(火) 16:39

コメント返信:

[ 一覧(最新更新順) ]


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