痔になりやすい生活習慣とは?

いつもお世話になっています。
行き詰まってしまったので、皆様よろしくお願いします。

Excel 2017
Windows XP

Sheet1に集計シート
Sheet2に元となるデータがあります。
表はa~g列までありc列からcountif関数等が入っています。

Sheet1のa列 検索文字
Sheet1のb列 vlookupでsheet2から出した結果
Sheet1のc列 if(countif(b3,"*チョコ" ),"チョコ","その他"
.
.
.
やりたいのはb列にvlookupを出すのではなく、
直接検索値をvlookにしたいのです。
イメージとしては if(countif(vlookup(省略)),"*チョコ" ),"チョコ","その他" にしたいです。
If関数で if(vlookup)="チョコ","チョコ","その他" なら出来たのですが、アフタリスクを使うとエラーになるようで
どうぞアドバイスよろしくお願いします。

質問者からの補足コメント

  • 失礼しました。
    エラーになったこともあり、省略していました。
    実際はもっと複雑ですが、簡単に内容を書かせていただきます。

    Sheet1 a列 品番
    Sheet1 b列 vlookup(a3,sheet2!a:e,2,false)
    Sheet1 c列 if(countif,b3,"*チョコ"),チョコ,その他)

    Sheet2 a列 品番
    Sheet2 b列 種類1(スイス製チョコ、フランス製チョコ、フランス製クッキーなど書いてあります)

    これを元にb列に直で結果を求めたいです。
    理想図
    if(countif(vlookup(a3,sheet2!a:e,2,false),"*チョコ" ),"チョコ","その他"

    よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/04/03 15:58

A 回答 (4件)

こんにちは



COUNTIF関数の第一引数はセル範囲です。(単数セルでも可)
一方でVLOOKUPの結果はセルの値(今回は文字列)を返しますので、
 COUNTIF( 文字列, 検索文字 )
という形式になってしまい、エラーになってしまいます。

解決方法は二通り考えられます。
1)文字列内の検索処理に変更して、COUNTIFの代わりにFIND関数を利用する
2)引数としてVLOOKUPの代わりにセル参照を返す関数を利用する

1)の方法の場合、FIND関数ではワイルドカード(*)は不要になりますが、その代わり見つからない場合にはエラー値が返されますので、判定方法を変える必要があります。
 =IF(ISERROR(FIND("チョコ",VLOOKUP(~~~))),"他","チョコ")
のような感じで、「~~~」のところには現在の検索内容を入れてください。

2)のセル参照の取得は、通常の計算ではあまり行わないと思いますので、少々わかりにくいかもしれませんが…
上述しましたように、VLOOKUPでは直接セルの値を取得してしまいますので、MATCH関数で検索し、表の左上セル位置からOFFSET関数で検索結果のセル参照を取得するようにすれば、COUNTIF関数内でも利用できるようになります。
 COUNTIF(OFFSET(表の左上セル,MATCH(~検索内容~)-1,列の位置), 検索文字)
といった要領で計算すれば、ご提示の形式のままで処理が可能になります。
「表の左上セル」や「~検索内容~」、「列の位置」などは現状のVLOOKUPと同等になるように値を設定しておく必要があります。

方法は少し違いますが、1)、2)とも結果は同様ですので、多分、1)の方が式も短くなると思いますし、わかりやすいのではないかと想像します。
    • good
    • 0
この回答へのお礼

ありがとう

私のつたない質問に丁寧に答えていただき、ありがとうございました。
希望通りの結果になり、今後も活用させていただきます。
本当にありがとうございました!

お礼日時:2018/04/03 19:31

》 Excel 2017


》 Windows XP
え、もう Excel 2017が市販されてるの?それをXPで。
    • good
    • 0

>if(countif,b3,"*チョコ"),チョコ,その他)


転記するならするでちゃんと書いてくださいね。この式おかしいですよね?

さて、*チョコということはチョコは必ず後ろにつくと判断して

=IF(RIGHT(VLOOKUP(A3,Sheet2!$A:$E,2,FALSE),3)="チョコ","チョコ","その他")

とかでは如何でしょうか?
もっとすっきりした回答が他につきそうな気がしますが。
    • good
    • 0

わかりづらいので、


(省略)とかせずに、式をきちんと書いてください。
それから、データも具体的にお願いします。
何が間違っているかもわかっていないのに勝手に式を省略して、そこに原因があったらどうするんですか?
この回答への補足あり
    • good
    • 0

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

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

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

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

QエクセルでIFとCOUNTIFを組み合わせるようなことは可能でしょうか

エクセルでIFとCOUNTIFを組み合わせるようなことは可能でしょうか?
現在エクセルを用いてデータの整理を行っているのですが、
今自分がやりたいことをどうすれば行えるのか分からず悩んでおります。
具体的には
A B
1 1
1 3
2 2
2 1
1 2
1 1
といった風にデータがあったときに、Aが"1"の場合のみ
Bの列をCOUNTIFを使ってCOUNTIF(B2:B7,"1"), COUNTIF(B2:B7,"2")…と求めたいと考えております。
つまりAの条件に従ってBの列をカウントするかどうかを判定したいのですが、
インターネットで調べたところIF関数ではこのような使い方ができません。
どなたかご存知の方いらっしゃいましたら教えていただけると幸いです。

Aベストアンサー

一例です。
IFとSUM関数の組み合わせでも可能です。
=SUM(IF((A2:A7=1)*(B2:B7=1),1))として入力完了時にshift+ctrl+enterを押下(配列数式といいます)
又、エクセル2007以上ならば、COUNTIFS関数で複数条件の計数が可能です。
=COUNTIFS(A2:A7,1,B2:B7,1)

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QエクセルのCOUNTIFが正しくカウントされない原因について

この度はよろしくお願いします
エクセルのCOUNTIFで、例えば列Aに0~9までの数がランダムに入っているとします。それをカウントすると0~4まではきちんとカウントするのですが、5~9までのカウント数が0になってしまいます。実際には5~9までの数も含まれているのですが、このようになってしまう原因は何でしょうか?
よろしくお願いします。

Aベストアンサー

同じ半角の5に見えていても、数値扱いと文字扱いになっている場合があります
COUNTIFを使う前に、VALUEで数値に統一してみて下さい

Qお願いします!!!VLOOKUPで拾ってきた数字を合計したいのです!!!

こんにちは!VLOOKUP関数を使用して拾ってきた数字を合計したいのですが、SUM関数を使用するとエラー値(「#N/A」)になってしまいます。一度、別のセルに値のみを貼付けをしてからでないと合計できないのでしょうか?明日の朝までに仕上げる明細を作成していますが、せっかく作成したのに、合計ができずにとても困っています。どなたかお願いします。

Aベストアンサー

こんにちは~

合計する範囲の中に、#N/Aエラーが出ているセルがありませんか?
1つでもエラーがあれば、合計もエラーになりますよ。

とりあえず、合計する範囲が B1:B10だとすれば
合計を出すセルに、

=SUMIF(B1:B10,"<>#N/A")

とすれば、エラーが出ているセルを無視して合計できるかもしれません。

ただ、そのエラーを出さないように、VLOOKUP関数を使っている数式を変更することがいちばんです。

参照表が、F1:G20にあって、A1に検索値を入れているとすれば、
こんな感じ。

=IF(COUNTIF($F$1:$F$20,A1),VLOOKUP(A1,$F$1:$G$20,2,FALSE),"")

Qエクセル 同じ値を探して隣の数値をコピーする

エクセルで以下の作業を簡単にする方法を教えて下さい。

Sheet1の1行目には見出しがあり、A列とB列の2行目から下にデータが入っています。(約200行)
A列     B列
田中    13
山本     8
谷口    11
鈴木    6
佐々木    9
奥村     15




Sheet2のA列1行目から下には別のデータが入っています。(約600行)
A列
太田川
山村
田中
多賀先
鈴木
奥村
幸田




Sheet2のA列のデータと完全一致するデータ(名前)をSheet1のA列から探して、同じ名前があれば、その隣のB列にある数値をSheet2のB列に貼り付ける。
見つからない場合はSheet2のB列は空欄のままです。
Sheet2
A列      B列
太田川     
山村
田中    13
多賀先
鈴木     6
奥村    15
幸田


Aベストアンサー

シート2のB2セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(Sheet1!A:A,A2)=0,"",VLOOKUP(A2,Sheet1!A:B,2,FALSE))

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」どちらでも表示される)

QExcel MATCH関数で検索範囲内に同じ値の検索値が複数ある場合

MATCH関数で、検索した値が複数ある場合に1つしか出なくて困っています。
(例)
   A B C D
1 年月日 種類 番号 備考
2 4月1日 肉類 1
3 4月2日 野菜 2
4 4月3日 肉類 1
5 4月4日 果物 2
6 4月5日 野菜 1
7 4月6日 果物 3
8 4月7日 果物 2
9 4月8日 肉類 1

この表で、D9の備考の欄に「種類:肉類、番号:1」と同じものがあった時の日付を、新しい日付で取り出したいのです。

INDEX(A2:A8,(MATCH(B9,B2:B8,0)+MATCH(C9,C2:C8,0))/2)
としたのですが、本当は4月3日を取り出したいのですが、4月1日が出てきます。
どのようにしたら良いでしょうか?
Excel2003です。
よろしくお願いします。

Aベストアンサー

MATCH関数を使用しませんが、D9の書式を日付にして、
=MAX((A2:A8)*(C2:C8=1)*(B2:B8="肉類"))
と、入力してShift+Ctrl+Enterキーで入力完了してみてください(配列式になります)。

Qvlookup関数で検索値を含む文字列を検索する方法

vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。
 よろしくお願いします。

Aベストアンサー

=VLOOKUP("*"&D1&"*",A:C,3,FALSE)

QExcelで条件が一致する場合、○印で表示する

Excelの関数についての質問です。

(列A)    (列B)   (列C)
相原久美子   相原久美子  ○
高橋 聡子   上田かなえ  ○
上田 かなえ  竹中聡美
武田 良子

列Bにデータを入力した際、列Aに同じものがあれば○を、
そうでなければ何もしないという関数を作成したいと思います。

今のところはCOUNTIF関数を使い、
=IF(COUNTIF($A$1:$A$4,B1)>0,"○","")
のように組んでいますが、氏名の間に空欄を含んだ場合の処理が
うまくいきません。

何か良い方法はありませんでしょうか。よろしくお願い致します。

Aベストアンサー

こんにちは
作業用セル列Dを作って列Aの空白を処理する例です。
D列に以下の関数を入れて空白を取り除きます。
=SUBSTITUTE($A1," ","")

C列に質問者さんの式を変形して入れます。
=IF(COUNTIF($D$1:$D$4,B1)>0,"○","")


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング