[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列が入力されているセルのみの合計を返すには』(わたし)
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
> 範囲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
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.