ウィンドウズXP サービスパック3 オフィス2003 ノートPCの動作環境で、
エクセル2003で、セルの中の一文字だけをカウントイフで数えたいです。
セルの中に、トモコ、カズヤ、ナオキ、カズコ、と言う風にあるとすると
コの数だけ数えたいのですが、そうすると
カウントイフでは0になってしまいます。

どうにかしてコの数だけ数えることはできないでしょうか?

A 回答 (6件)

トモコ、カズヤ、ナオキ、カズコが別セルにあって"コ"のあるセルの数でいいなら


=COUNTIF(A1:A10,"*コ*")
または
=COUNT(FIND("コ",A1:A10))
でCtrl+Shift+Enterで配列数式に変換

1セルに上記の文字列があってその中の"コ"のカウントだと前の方と同じで
SUBSTITUTEで"コ"を削除した後の文字列の長さの比較になります。
    • good
    • 0

#4です。


配列数式を使わない方法を考えて
例データ
A2:A9
トモコ
カズヤ
ナオキ
カズコ
コズエ
マコミ
ココン
コンコンコン
式 =SUMPRODUCT((LEN(A2:A9)-LEN(SUBSTITUTE(A2:A9,"コ",""))*1))
結果
    • good
    • 0

例データ A2:A8


トモコ
カズヤ
ナオキ
カズコ
コズエ
マコミ
ココン
何処か空きセルに
=SUM(LEN(A2:A8)-LEN(SUBSTITUTE(A2:A8,"コ","")))
と入れて、Shift,CTRL,ENTERキーを同時押しする・配列数式。
結果は6
ーー
配列数式を聞いたことも無いかもしれないが、難しい課題なので
使わざるを得ないのだ。
なじみなければ、B列にワーク列として、各セルで「コ」の存在する文字数を一旦出しておいて加えるか。
    • good
    • 0

回答番号:No.1さんと同じですが



 =LEN(A1)-LEN(SUBSTITUTE(A1,"コ",""))
「カウント関数でセルの一文字だけを数えたい」の回答画像3
    • good
    • 0

参考までに、アドインになってしまいますがこんなのもあります。


http://kiyopon.sakura.ne.jp/soft/tokutei.htm

その他
http://kiyopon.sakura.ne.jp/soft/index.htm
    • good
    • 0

一例です。


COUNTIF関数ではできませんので次の方法は如何でしょうか。
=LEN(セル)-LEN(SUBSTITUTE(セル,"コ",""))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで種類を数える関数が無いのは何故?

エクセルで種類を数える関数が無いのは何故なんでしょうか?

エクセルで種類を数えるには、いくつかの関数を組み合わせるのが一般的ですよね?
直接数える関数が無いのは、訳があるんでしょうか?

Aベストアンサー

>>エクセルで種類を数える関数が無いのは何故なんでしょうか?

やっぱり、そういう関数が必要な方が全体からみたら少数派だと、エクセルの開発者たちが考えているからではないかと思います。
また、既存の関数を組み合わせたら、対処可能だから、無理して新しい関数を作る必要性もない、開発の優先順位が低いって判断もあるでしょうね。

私は、エクセルの表を作ったり、エクセルVBAでプログラムを作ったりしますけど、そういう関数が必要になったことが全くありませんし。

QExcel2003で、セルの数を数えたいのですが・・

教えてください。
Excelの関数を使って、指定範囲内の"赤色"に塗りつぶしたのセルの数を数えたいのですが、可能でしょうか???
Countif分を使えば良いかな??という事までは判っているのですが、赤色のセルを指定することが出来ません。

教えてください。

Aベストアンサー

以下のFunctionは指定した範囲に指定色で塗りつぶしたセルが何個あるかを数えるものです。セルに関数として

=CntColor(A1:E5 , 3)

のように使ってください。3は赤の色コードです
(黒:1、青:5、白:2など。数字省略時は塗りつぶしなしを数えます)

Private Function CntColor(ByVal 範囲 As Range, ByVal 色 As Variant) As Long
Dim r As Range
CntColor = 0
If Not IsNumeric(色) Then
色 = xlColorIndexNone
End If
For Each r In 範囲
If r.Interior.ColorIndex = 色 Then
CntColor = CntColor + 1
End If
Next
End Function

このFunctionはVBE画面の標準モジュールに登録してください。標準モジュールが分からなければ一度「ツール」→「マクロ」→「新しいマクロの記録」を動かして作成されるモジュールシートのことです。

色のコード(カラーインデックス)が分からないなら「新しいマクロの記録」でセルに色々な色を塗ってみれば良いです。このときに作成されるマクロのColorIndexの数値が、色のコードに相当します

以下のFunctionは指定した範囲に指定色で塗りつぶしたセルが何個あるかを数えるものです。セルに関数として

=CntColor(A1:E5 , 3)

のように使ってください。3は赤の色コードです
(黒:1、青:5、白:2など。数字省略時は塗りつぶしなしを数えます)

Private Function CntColor(ByVal 範囲 As Range, ByVal 色 As Variant) As Long
Dim r As Range
CntColor = 0
If Not IsNumeric(色) Then
色 = xlColorIndexNone
End If
For Each r In 範囲
If r.Interior....続きを読む

Qエクセルの関数で

エクセルの関数辞典を見ていたら、CUMPRINC関数というのがありました。
しかし、エクセルの「挿入」→「関数」→関数の分類で「財務」というのを選択したのですが、一覧表に載っていません。
どこに載っているのでしょうか?
どうすればこの関数を使えますか?
ちなみにシートの上でやっても関数の反応をしませんでした。

Aベストアンサー

Yahooで検索してみると、参考URLが引っかかりました。

参考になりませんか?

参考URL:http://money-sense.net/doc/20041215_224257.php

Qexcel2000で特定セルから空セルの前までの行数を数えたい

セルA7から下へ向かってデータが入っています。その数をセルA1に入れたいと思い、

  「 Cells(1, 1) = Range("a7", Range("a7").End(xlDown)).Rows.Count 」

こんなマクロを書きました。出展は
 「 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200611/06110262.txt 」です。


ここで、下記のようなデータを入れて試してみました。()内が期待する値で、[]内が実際の値です。


       <テスト1> <テスト2> <テスト3> <テスト4> <テスト5>
セルA7           あああ    あああ           あああ 
セルA8                  いいい    いいい    いいい 
セルA9                         ううう        
セルA10                                   
セルA11                               おおお
-----------------------------------------
期待する値     0      1      2      0      2
実際の値  65530  65530      2      2      2


と、このように期待する値が得られません。何が間違っているのでしょうか。
丸1日考えているのですが原因が分かりません。よろしくお願いします。
(文字幅がおかしくて見にくいと思いますがよろしくお願いします)

セルA7から下へ向かってデータが入っています。その数をセルA1に入れたいと思い、

  「 Cells(1, 1) = Range("a7", Range("a7").End(xlDown)).Rows.Count 」

こんなマクロを書きました。出展は
 「 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200611/06110262.txt 」です。


ここで、下記のようなデータを入れて試してみました。()内が期待する値で、[]内が実際の値です。


       <テスト1> <テスト2> <テスト3> <テスト4> <テスト5>
...続きを読む

Aベストアンサー

こんにちは。

正しいとか間違っているというよりも、「期待する値」に、特別な法則を持っている、と思います。

Cells(1, 1) = Range("a7", Range("a7").End(xlDown)).Rows.Count
End プロパティは、値のあるセルを下に向かって探せ、ということです。だから、A7 から、その下を最後まで探して、その行数を出せ、ということでは、意味が違いますね。

質問者さんの直感なのでしょうか、「期待する値」の求め方は、関数タイプですね。「最初の空白行を探せ」ということですね。

関数なら、こうなります。

=MATCH(TRUE,INDEX(ISBLANK(A7:A100),,),0)-1

7行目より手前か、引数の範囲の外に数式を置いてください。循環参照になります。
もちろん、この数式をマクロに代入しても構いませんが、少し工夫が必要です。

以下のマクロと比較すると、上記の数式に軍配が上がりそうですね。Excelのワークシートはマクロよりも難しいですね。

'------------------------------------

Sub Test1()
  Dim i As Integer
  Dim ret As Long
  Const col As Integer = 5
  '書き出す行...15 行目
  Cells(15, col).Resize(, 5).ClearContents
  For i = 1 To col
    ret = spBlankRow(Cells(7, i)) '7行目から
    Cells(15, i).Value = ret - 7
  Next
End Sub
Function spBlankRow(rng As Range) As Long
Dim r As Range
  On Error Resume Next
  Set r = Range(rng, Cells(Rows.Count, rng.Column)).SpecialCells(xlCellTypeBlanks)
  On Error GoTo 0
  spBlankRow = r.Cells.Cells(1).Row
End Function


ちょっと言い訳:
最初、ユーザー定義関数だけで作ろうと思いましたが、SpecialCells で範囲を認識させるには、コマンドに命令を与える信号が必要ですが、ユーザー定義だけでは、そのコマンドに命令が与えられないので、プロシージャ型になっています。

こんにちは。

正しいとか間違っているというよりも、「期待する値」に、特別な法則を持っている、と思います。

Cells(1, 1) = Range("a7", Range("a7").End(xlDown)).Rows.Count
End プロパティは、値のあるセルを下に向かって探せ、ということです。だから、A7 から、その下を最後まで探して、その行数を出せ、ということでは、意味が違いますね。

質問者さんの直感なのでしょうか、「期待する値」の求め方は、関数タイプですね。「最初の空白行を探せ」ということですね。

関数なら、こうなります...続きを読む

Qエクセルの関数 ネスト

エクセルの関数 ネスト

エクセルの関数で、ネストさせるときがあるとおもうのですが、

関数を内側に書いたらよいのか外側に書いたらよいのか分からなくなる時があります。

エクセルの関数に関してわかりやすく書いてあるページなどありますか。

Aベストアンサー

こんばんは

Excel2003までは、ネストが7まで、2007では64までが可能です。
http://www.google.co.jp/search?hl=ja&source=hp&q=excel+%E3%83%8D%E3%82%B9%E3%83%88%E3%80%802003%E3%80%802007&aq=f&aqi=&aql=&oq=&gs_rfai=

「仕様上は可能」でも、複雑なネストは間違いが生じやすいですし、変更もしにくくなります。「出来るだけネストはしない」「適宜、中間結果をセルに出力する」という方法を採った方が、間違いが少なく、柔軟性のあるシステムになると思います。

>エクセルの関数に関してわかりやすく書いてあるページなどありますか。
関数の個別の機能ならば、Webサイトも書籍も多数あるのですが、「組み合わせて使う」というのはその場その場での発想になってしまうと思います。

Q【エクセル】左隣のセルが「2」となっているセルの数を数えたい。

いつもお世話になってます。
エクセル2003について、以下の条件を満たす関数式を教えてください。

A列にa、b、c、d、eと5種類の1文字がランダムに入力されています。
B列に1、2、3と3種類の数字1つが同様に入力されています。

・左右のセルの組み合わせが「a」「2」となっている数だけ数えたいのですがどのような式で計測すれば良いのでしょうか?

・言い方を変えると、右隣が「2」の「b」のセルの数を数えたいのです。

・オートフィルターは使わないこととします。

たびたびすみません。よろしくお願いします。

Aベストアンサー

配列数式といいますが
=SUM(IF((A1:A15="a")*(B1:B15=2),1,0))
と入れて、SHIFT+CTRL+ENTERの3つのキーを同時に押す、でもできます。
A1:A15までで値がa,かつ(*),
B1:B15 が2の行を1とし、満たさない場合は0とし、それを1-15行まで加えると、条件を満たす件数になります。
ーーー
>言い方を変えると、右隣が「2」の「b」のセルの数を数えたいのです

言い方を変えると、右隣が「2」の「a」のセルの数を数えたいのです
が正しいのでは。読者・回答者が混乱するところなので正しく。

Qエクセル関数の解読サイトなんてありますか?

エクセル関数の解読サイトなんてありますか?

いつもお世話になっております<(_ _)>

エクセルファイルに関数の入った数式が入力されています。
セルごとに複数の関数が入っていますが、私にはちっともわかりません。

そこで質問です。
こんなとき「エクセル関数を解読」してくれるようなサイトってありませんか?

たとえば検索窓があってそこに「=SUM(S1:S13)」わからなくて困っている関数式を入力。
すると答えの別ボックスに「S1~S13までの数値の合計」と出てくるようなサイト。

それに近いサイトでも良いので知っている方がいらっしゃればぜひ、教えてください<(_ _)>

Aベストアンサー

もし、

=IF(E14="","",IF(O14="",(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1300,(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1625))

だったら、どういう文章が出て欲しいのでしょうか?

もしE14が空白だったら、
 空白、
そうじゃなかったから、
 もしO14が空白だったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1300
 そうじゃなかったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1625

って感じですか?
数式をそのまま読解したほうが解りやすくないですか?

Qエクセルで1セルに一文字だけ入力したい

エクセルで原稿用紙のように表組みをして、1セルに一文字ずつ入力できるようにしたいのですが、このようなことは可能なのでしょうか。
もちろん、日本語縦書きで漢字も使用してです。

原稿用紙のようにマス罫の中に入力したいのです。
良い方法を教えてください。宜しくお願いします。

Aベストアンサー

入力規則で1つのセルに1文字しか入力できなくすることは可能かもしれませんが、これでは2文字以上入力するとエラーになってしまいます

希望されるものとは違うとは思いますが、A1に文章を入力して、B1に以下の式を入力します
 =MID($A$1,(20-COLUMN())*20+ROW()-1,1)

A2セルをA2:T21の範囲にコピーしてみてください。
エクセルでできるのはこんなことぐらいではないでしょうか
(20×20の升目になるはずです)

Qエクセル関数を、書き写して分析できるツールはある?

タイトルの件、質問します。

エクセルの関数を分析する際に、エクセルの数式バーや、セルに入っている関数を
F2を教えて見るのでは、見にくい場合があります。

現在は、私は、メモ帳に関数をコピーして、分析したり、修正したりしています。
エクセルの機能or他ソフトで、関数を分析できるツールはあるのでしょうか??

【エクセルバージョン】
2003、2007

Aベストアンサー

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利な方法です。
そもそも計算が通っていない(たとえばカッコの対応が間違えていて,Enterしても受け付けてくれないようなミスをしている場合)には使えません。



また,数式バーの中で数式の「中」にカーソルを入れて左右の矢印キーでカーソルを動かしていったときに,「(」や「)」をまたいだ瞬間に,対応する「閉じカッコ」「始まりのカッコ」が色つきで強調表示されるのを確認しながら,カッコの対応がまちがえてないかなどを調べるのも簡易な良い方法です。


あまり使わない方法ですが,数式の中で適宜ALT+Enterを打って「セル内改行」してしまい,数式を縦に分解して書いてみるのも整理しやすい方法のひとつです。

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利...続きを読む

QVBA セルの値をみて、そのセルに入っている数だけコピー、ペイストを繰り返すというのはどう書いたらよ

VBA

セルの値をみて、そのセルに入っている数だけコピー、ペイストを繰り返すというのはどう書いたらよいでしょう?

Cells(1,1)の値をみにいってそのセルの値の数だけデータをコピーしてペイストするという構文を書きたいのですが、さっぱりです。

よろしくお願い申し上げます。

Aベストアンサー

基本的には、

dim i as long
for i = 1 to Cells(1,1).value
コピー元からコピー
コピー先へペースト
next

のようになります。
Cells(1,1)の内容が文字列の場合は、考慮していません。
文字列などの不正なデータが格納されている場合は、事前にCells(1,1)の内容が1以上の整数であることのチェックが必要になります。
コピー元、コピー先が提示されていないので、コピー&ペーストに関する処理は、日本語で書きました。


人気Q&Aランキング

おすすめ情報