AIと戦って、あなたの人生のリスク診断 >>

Excel2010
あるところで次のような式をみました
=COUNTIF($B$2:$B$22,"*?")
"*?"は、どういう意味なのでしょうか

このQ&Aに関連する最新のQ&A

A 回答 (5件)

#1,3です。



#1の説明に誤りがありました。
誤)
> "?"
> は、「長さ0または1の文字列」
正)
"?"
は、「任意の1文字」
以上、訂正をお願いします。
失礼しました。
    • good
    • 0

こんばんは!


横からお邪魔します。

空白以外のセル数を取得する関数
>=COUNTIF($B$2:$B$22,"*?")
の使い方は当方は以前から
>=COUNTIF($B$2:$B$22,"?*")
のように「?」とアスタリクスを逆にして使っています。
「長さが1文字以上の文字列」という解釈です。
(実際はどちらでも大丈夫のようですが)

生データであればCOUNTA関数で対応できるのですが
数式によって「空白に見えるセル」が混在している場合、COUNTA関数では対応できないので
このような使い方はしたことがあります。

ただし、大前提として数式によって返ってくるのは「文字列」というコトです。
結果が「数値」の場合は反応しないと思います。(「0」となるはずです)
数値の場合はCOUNT関数で対応できますが・・・

※ 実は先日同じような質問がCOUNTIFS関数でありましたが
数式によって表示されるデータが「文字列」なのか、「数値」なのかが判らなかったので
敢えて他の方法をアドバイスしたことがありました。

まずはこの程度で・・・m(_ _)m
    • good
    • 1

#1です。



ご質問の数式は10年近く前から、何度か書籍・Webサイト・電子掲示板でも
紹介されていたものだったと記憶しています。
この数式を正解とするクイズに参加したこともありました。
もしかしたら
=COUNTIF($B$2:$B$22,"?*")
と、順番が逆になっていたりする場合もあったのかも知れませんけれど、、、。

現在の私の環境でも、
 #1で提示したサンプルで
 列挙した4つの数式がすべて異なる値を返す
ことが簡単に確認できます(数式戻り値、上から{4;5;2;7})。
もしかして、環境によっては正しく機能しない場合がある?
というお話をなさっているのでしょうかね?
もし結果が異なるということでしたら、
情報として原因が知りたいです。
Excel関数も用いるワイルドカードと正規表現のメタキャラクタとは
確かに似てるから混同してしまう人も居るのかも知れないですね。

以上、#2さんのコメントを受けての追加補足でした。
    • good
    • 0

こんにちは。



>=COUNTIF($B$2:$B$22,"*?")
>"*?"は、どういう意味なのでしょうか
「"*?"」
誤動作はしませんが、何かの間違いだと思います。

=COUNTIF($B$2:$B$22,"*")
ということと、違いはありません。

*  (任意の1文字以上の文字列)
?  (任意の1文字)

Excelの組み込み関数の中では、二つを直接組み合わせても意味がありません。

これは、別のストリーム系のプログラムで使う「正規表現」の最短マッチ法に使う書き方に
似ています。しかし、正規表現の書き方は少し違いますし、本来、Excelとは仕様も違います。
(ストリーム系の代表としては、Unicode系の"grep"があります)

おそらく、文字列を探す"*"や"?" を正規表現のそれを混同したのではないでしょうか?

「?」は、Excel上では、「長さ0の文字列」は検知できず、任意の1文字を探します。
(※ 「長さ0の文字列」というのは、少しおかしな表現ですが、れっきとしたブログラミング用語
 です。"" [二つのクォーテーション文字で囲まれた中に何もないもの]のことですが、
 Excel上では、="" と表します。Excel上にはありませんが、「値0の文字列」などという
 ものもあります。)

余談ですが、ストリーム系のプログラムでは、正規表現のメタキャラクタと言いますが、
 「?」は、直前に置かれている文字の1回以上の文字列を指します。
 「*」は、直前に置かれている文字の0回以上の文字列を指します。
ということになっていますが、Excel上では、標準的には使えません。

たぶん、どこかに、Excelの関数のワイルドカードの説明や使い方は出ているとは思いますが、今の時点で期待通りの詳しい説明があるサイトが見つかりませんでした。

ただし、Excelの関数のワイルドカードにも、裏ワザがいくつかあると思います。
例えば、「長さ0の文字列」を探す方法は、最近、質問に出たばかりです。
    • good
    • 0

こんにちは。



> "*?"は、どういう意味なのでしょうか

「少なくとも一文字以上の長さのある文字列値」があるセルをカウントします。

=COUNTIF($B$2:$B$22,"*?")
=COUNTIF($B$2:$B$22,"*")
=COUNTIF($B$2:$B$22,"?")
=COUNTA($B$2:$B$22)

上記4種類の数式で、
0
10
a
abc
=""
="a"
="abc"
などのサンプルを使って確認してみて下さい。

よく見かける数式として、=IF(条件,計算値,"")のようなものがありますが、
条件によっては「長さ0の文字列」をセルの値に返します。これを
=""
で表していますが、
COUNTA関数と、ご提示の数式ととで、
結果が違う点に着目して頂ければ、
ご提示の数式の意味(存在意義)は自ずと見えてくると思います。

"*"
は、「長さ0以上の文字列」
"?"
は、「長さ0または1の文字列」
を指し示すワイルドカードです。
    • good
    • 0
この回答へのお礼

すばやい回答ありがとうございます。
さっそく試してみます。

お礼日時:2015/02/15 07:59

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExcelで○○を含むという条件にてvlookup処理(比較)できるでしょうか?

説明が難しいのですが、以下のようなAとBの2つのシートがありまして、BシートのA列にある条件がAシートのA列の歯抜の状態で入力されてます。これにBシートのB列に、AシートのB列を表示したいという状況があります。

具体的なイメージは、以下の通りです。

===========================================
Aシート
 A        B
1 山田真太郎 東京
2 鈴木波奈子 名古屋
3 斉藤ミツル 大阪
-------------------------------------------
Bシート
 A  
1 藤ミツ
2 奈子
3 田真太
===========================================


BシートのB列に関数などを利用して以下のように表示させたいです。
==========================================
 A     B
1 藤ミツ 大阪
2 奈子  名古屋
3 田真太 東京
==========================================

このように、「セルにある言葉を含む」という条件にて、Vlookupを使ったような計算式というのを組む事ができるでしょうか?

私が感じているBシートのB1に入れる関数イメージ
=VLOOKUP((*A1*),A!$A$1:$B$3,2)

何か良い方法があればご教授ください。

説明が難しいのですが、以下のようなAとBの2つのシートがありまして、BシートのA列にある条件がAシートのA列の歯抜の状態で入力されてます。これにBシートのB列に、AシートのB列を表示したいという状況があります。

具体的なイメージは、以下の通りです。

===========================================
Aシート
 A        B
1 山田真太郎 東京
2 鈴木波奈子 名古屋
3 斉藤ミツル 大阪
-------------------------------------------
Bシート
 A  
1 藤ミツ
2 奈子
3 田真...続きを読む

Aベストアンサー

NO2です。
因みに=VLOOKUP("*"&A1&"*",A!A:B,2,FALSE)でも可能ですのでお試しください。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qエクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてくだ

エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてください。

               A列   B列    C列
Aファイルには 行 【注文月日】、【氏名】、【商品金額】が記入されています。
Bファイルには 行 【注文月日】、【氏名】、【税金額】が記入されています。

AファイルのD列に、Aファイルの【注文月日】かつ【氏名】がBファイルの【注文月日】かつ【氏名】と一致する場合のBファイルC列の【税金額】を表示したいのです。

VLOOKUP関数では条件が1つだけなので使用できませんが、似たような関数で複数条件ができる関数があるなら教えてください。

Aベストアンサー

こんばんは!
一例です。
↓の画像で右側(Bファイル)の方に作業用の列を設けています。
作業列D2セルを
=A2&B2
としてオートフィルで下へずぃ~~~!っとコピーします。

そして、AファイルのD2セルに
=IF(OR(A2="",COUNTIF([Bファイル.xls]Sheet1!D$2:D$1000,A2&B2)=0),"",INDEX([Bファイル.xls]Sheet1!C$2:C$1000,MATCH(A2&B2,[Bファイル.xls]Sheet1!D$2:D$1000,0)))
という数式を入れ、オートフィルで下へコピーすると
画像のような感じになります。
尚、数式はBファイルの1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば良いのですが
他に良い方法があれば読み流してくださいね。m(__)m

QExcelで最大値の入っている数値の右側にある項目名を拾いたい。

Excelで最大値の入っている数値の右側にある項目名を拾いたい。

下のようなデータがあります。(A列は年、Bは何かの生産量・・とします)

1 2000 7
2 2001 11
3 2002 14
4 2003 10
5 2004 9
6 2005 8

生産量(B列)の最大値を求めるのは=MAX(B1:B7)で"14"が得られると思いますが、求めているのは"14"の入っている年の"2002"という数字を隣のC1に入れたいと思います。
どのような関数が必要でしょうか?

Aベストアンサー

こんばんは!
一例です。

↓の画像でC2セルに表示するようになりますが・・・

C2セルの数式は
=INDEX($A$2:$A$1000,MATCH(MAX(B2:B1000),B2:B1000,0))
にしています。
(エラー処理はしていません)
A列の1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば幸いです。m(__)m

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QエクセルのIF文で「NOT=」はどう書くのですか?また、>=や<=の場合の書き方を教えてください

タイトルのとおりです

IF文で下記の3つの書き方がわかりません。

NOT=は、<>?
0以外の場合は、A1<>0?

A1が0と同じか、大きい場合は
A1>=0?

なんだか、うまくいきません^^;

よろしくお願いいたします

Aベストアンサー

A1が・・・・・
A1 <> 0  0以外
A1 >= 0  0以上(0を含む)
A1 > 0   0より大きい(0は含まない)
A1 <= 0  0以下(0を含む)
A1 < 0  0未満
A1 = 0  0

=<,=> などの書き方は使えません。

QEXCELで、特定の文字を含むセルを抽出したいのですが。

仕入れ帳のようなシートで、B列に商品名があります。
商品名に特定の文字(数字又は文字)を含む時、空白列のC列に、その文字を抽出する方法をご教示ください。B列の商品名は変化させずにです。
意図は、当シート内で並べ替えをする時に、C列をキーとするためです。
商品名が、各種文字と数字で構成されており、そのままでは、希望する並べ替えができないのです。
宜しくお願い致します。

Aベストアンサー

「IF」関数、「ISERR」関数、「FIND」関数を組合せれば可能ですね。
たとえば、文字「a」を検索するなら、B2セルを対象として、C2セルに、

=IF(ISERR(FIND("a",B2)),"","aが入っています")

と入れます。

注意事項として、アルファベットを検索する場合、大文字と小文字を区別します。
つまり、上の例ではB2セルに「a」があれば、「aが入っています」、と表示されますが、「A」では表示されません。
(「FIND」を「SEARCH」にすれば「a」・「A」どちらでも表示される)


人気Q&Aランキング