単一セル内の文字数を数える方法と当番表の作成方法

このQ&Aのポイント
  • 単一セル内の文字数を数える方法と、当番表の作成方法について教えてください。
  • COUNTIF関数を使って数えようと思いましたが、2人で担当した時間の場合、どうすればよいのでしょうか。
  • 関数やマクロなど、他の方法で代替できる方法も教えていただけると助かります。
回答を見る
  • ベストアンサー

単一セル内の文字(例:「ab」の場合、a=1、b=1)数を数えたい

当番表(A列に当番の種別、B1~W1に時間、Y列、Z列、AA列に当番に従事した回数の合計)を作りたいと思います。 この時、COUNTIF関数を使って数えようと思いましたが、2人で担当した時間の場合(下表の「C2」「C3」)Y~AAに回数をそれぞれ振り分けるには、どうすればよいのでしょうか。教えて下さい。お願いします。 できれば関数でお願いしたいのですが、これに代わるもの例えばマクロでも結構です。 A | B | C | … | Y | Z | AA | -------------------------- 1|種別|10:30 |11:30 | … | a | b  |  c | --------------------------- 2|清掃| a  | bc | … | 1 | 1  | 1  | --------------------------- 3|受付| b  | ab | … | 1 | 2  | … |

  • rondo
  • お礼率86% (39/45)

質問者が選んだベストアンサー

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.2

rondoさん 再び こんばんは(^^; >早速試してみまると…。で、できました。うれし~! よかたですね! 喜んで頂きなによりです! >更に解説までお願いしてよろしいでしょうか。 説明下手ですが・・・少々! (意味が不明の箇所がありましたら追記下さい) ご質問にも記載があるので 関数 COUNTIF() はご存知 のようですから構文自体は簡単に!  COUNTIF(範囲, 検索条件) ご存知の様に検索条件に合致するデータの個数を返す関数です。  問題は検索条件の記載ですが、これには 1.数値を検索する場合 符合付きの記載が可能 2.文字列を検索する場合 ワイルドカードの記載が可能 です。 今回の場合、対象が文字列ですから2番の方法を利用しています。 =COUNTIF($B2:$W2,"*"&Y$1&"*") この式の検索条件部分は "*"&Y$1&"*" の数式ですが この数式結果は、文字"*" と Y1 と "*" を繋げた ものですから "*a*" となります。 (文字と文字を繋げる数式は & を使います) 結果、数式は =COUNTIF($B2:$W2,"*a*") と読み替えられます! ワイルドカードの意味ですが 「*」文字数0を含む全ての文字列  *a は 文字列末に a が含まれている ba ○ ab × a ○  a* は 文字列頭に a が含まれている ba × ab ○ a ○ *a* は 文字列の何処かに a が含まれている ba ○ ab ○ a ○  となります。Z列やAA列の bやcについても同じです 今回は使いませんが、「?」というワイルドカードもあります  これは「?」一つで1文字を示しています。  a? は 文字列頭に a が含まれaの次に1文字ある  ba × ab ○ a × abc × これらを組み合わせると様々な検索が可能で  住所録から 東京都*区* で検索すれば東京都の23区の住所だけが検索されます。  ???県* とすれば3文字の県名だけが検索されます。  詳しくは、ヘルプでワールドカードと入力して表示された [文字列または数値の検索に使用できるワイルドカード文字] を見てみて下さい!

rondo
質問者

お礼

おはようございます。comvさん。 詳細な、しかも分かりやすい解説までしていただきありがとうございます。 直ぐに当番表に使いたいと思います。(^^)/~~~

その他の回答 (1)

  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんにちは! セルY2に  =COUNTIF($B2:$W2,"*"&Y$1&"*") AA2まで複写 及び必要行まで複写 でどうでしょうか!

rondo
質問者

お礼

ありがとうございました。早速試してみます。

rondo
質問者

補足

早速試してみまると…。で、できました。うれし~! ありがとうございました。ところが、初心者の私には、その意味がよく分かりません。更に解説までお願いしてよろしいでしょうか。

関連するQ&A

  • Excel2003 または07に関しての集計

    B列のデータがあります。このデータの個数を数えようとしています。 (1)が2つ、(2)とAAが各1あります。 それがc列で、式の結果がd列、式がe列です。 d列の結果が明らかにおかしいです。何故でしょうか? なお、下表でアンダーバー_はスペースです。 ____B____ C____ D____ E 2____ (2) 3 4____ AA 5____ (1) 6 7____ (1) ------- 9____ (1)___ 2____ 2____ =COUNTIF($B$2:$B$7,CB9) 10 ___ (2)___ 1____ 2____ =COUNTIF($B$2:$B$7,C10) 11 ___ AA___ 1____ 2____ =COUNTIF($B$2:$B$7,C11) 以上

  • 文字列AかBを含むセル数をSUMPRODUCT関数で求める場合

    文字列AかBを含むセル数をSUMPRODUCT関数で求める場合 エクセル2000です。 A1:A10のセル範囲だとして =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1) とすると、同一セルにA、Bの両方があった場合、重複してカウントされてしまいます。 重複を除外するために、 =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1)-SUMPRODUCT(ISNUMBER(FIND("A",A1:A10))*ISNUMBER(FIND("B",A1:A10))) と、重複してカウントされた数から両方が存在するセルの数を減じて求めましたが、以下のようなより簡素な式でも求められことがわかりました。 =SUMPRODUCT((ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)*1) この式でなぜAB両方があるセルが重複カウントされないのかどうもわかりません。 ご教示いただければ幸いです。 なお、SUMPRODUCTではなく =SUM(COUNTIF(A1:A10,{"*A*","*B*"}))-SUM(COUNTIF(A1:A10,{"*A*B*","*B*A*"})) でもできることは存じておりますが、今回はSUMPRODUCTの疑問として質問いたしました。

  • エクセルでA1のセルの文字とB1のセルの文字をくっつける方法

    たとえばA1のセルに「田中」という文字が入力されていて、B1のセルに「太郎」という文字が入力されているとします。 これをC1のセルに、A1セルとB1セルの文字をくっつけて「田中太郎」という文字を表示させたいのですが、関数か何かを使用してこういったことはできませんでしょうか? ちなみに、A列及びB列セルに文字が200個くらい入力されているので、コピーペーストでは辛いんです。

  • エクセルであるセルの文字が他のセル内で1文字でも存在するかを知る関数は?

    エクセルであるセルの文字が他のセル内で1文字でも存在するかを知る関数はありますか? たとえばA列の値に存在する文字がB列に1文字でもあるかを チェックすることができるのでしょうか。 A列    |   B列    |   C列 -------+----------+---------- ABCD  |  XYZB   |  ○ --> Bがある XY    |  ABSCE  |  X --> XもYもない HD     |  XUDM  |  ○ --> Dがある マクロ(VBA)でなく関数で表したいのですが このような関数はありますか? 関数のヘルプを調べたのですが、出来そうで出来ません。 どうぞよろしくお願いします。

  • A列の指定した位置にB,C列の文字を置換させる方法 2

    お世話になります。 昨日以下のような質問をさせていただきました。 *********** Excel2003で、A列の指定した位置にB,C列の文字を置換させる機能はありますか。 例 *にB列の文字を、¥にC列の文字を置換。 A   |B |C 1 (*)\(z)| あ| 2 2 (*)\(z)| 3 | 4     ↓ 1 (あ)2(z)|あ | 2 2 (3)4(z) | 3 | 4 ************ そして回答をいただき、そのうちの一つ「セルD1に数式で表示させるのなら =SUBSTITUTE(SUBSTITUTE(A1,"*",B1,1),"z",C1,1) 」を使わせていただきました。 この関数を用い、60行ほどある置換作業を短時間で終えることが出来喜んでいたのですが、その何時間か後に別ファイルで同じ作業を試みたのです。しかし今度は上手くいきませんでした。 一行目は難なく置換できたのですが、前回上手くいったやり方と同じ作業をしているのに、2行目以降の置換結果が1行目と同じになってしまいます。 こちらの過去ログやGoogleで調べましたが、自分でも理解できる解決策を見つけられず再度質問させていただきました。 よろしくお願いいたします。

  • 場合の数です。

    ご多忙の中宜しくお願い致します。 18個の玉すべてを三つの袋A,B,C,に分けて入れる。このとき玉は区別しないとする。 また玉の入ってない袋があってもよいとする。 また袋A,B,C,に入れる玉の数をx、y、zとする。x>y>z≧0を満たす入れ方は何通りあるか? これが問題なんですが、 z=0としてx+y=18 (x、y、z)=(17,1,0)、(16,2、0)とこれを繰り返し(10、8、0) z=1として・・・ と数えていくしかないのでしょうか? 他にいい解法があればおしえてください。 答えは27とおりです。 よろしくお願い致します。

  • エクセルのセル内の出現文字数をカウントしたい

    エクセルの各セルにはいっている、不特定の文字列の出現回数を調べ、他のセルに出現文字列とその回数を表示させたいのですができますか。 例えば |実態|下記|壮行|実態|………|実態|2|下記|1|壮行|1|というふうにです。  セルに入る文字列が決まっていないので、countifなどの関数が使えません。

  • EXCELでA列とB列の文字が合わせてC列に入るやり方を教えて欲しいで

    EXCELでA列とB列の文字が合わせてC列に入るやり方を教えて欲しいです。 例 A1セルは04+  B1セルは2000 C列に04+ 2000のように作りたいです(真ん中に1個スペース)。 セルが多すぎて、一個ずつやるのは大変時間かかりますので、関数のやり方をご教示ください。 よろしくお願いします。

  • エクセルのA列とB列にあるデーターのうち、同じデーターを抽出する

     A列  B列 a1111 z2222 *A列にもB列にも500件ほどの a2222 y3333  メールアドレスが入っています。c3333 a1111  ダブっているアドレスもあります。  ・   ・   ダブっているアドレスだけを抽出  ・   ・   したいのですが?  ・   ・   宜しくお願いします。  

  • 関数の件

    年間の日にち及指定曜日に連動して表示の方法は?     A列      B列        C列       D列       E列      F列       1  2014/5/4   日曜日      AA       AA        AA      祝日  平日はE1にAA表示、土曜日はD1に表示、日曜日はD1及びE1にAA表示の関数は       D1に=IF(OR(WEEKDAY(A1,2)>5,COUNTIF(F2:F20、A1)=1)、C1,””)  E1に=IF(OR(WEEKDAY(A1,1)>6、COUNTIF(F2:F20、A2)=1)、””、C1)  上記の関数では5/4、5/5、はD1,E1にAAが表示されます、5/4から5/5までD1にAA  のみ表示又、7/20(日)はD1、E1にそれぞれAAが表示されます、7/20はD1にAA   のみ 表示関数有りますか、可能であれば教えてください。      よろしくお願いします。     

専門家に質問してみよう