• 締切済み

エクセルで文字列検索後隣のセルの数値と比較後カウン

OKWave初めての書き込みです。 初心者な質問で申し訳ございませんが、 お分かりになる方、どうかご教授ください。 ◆質問内容 まずはじめに、エクセル内のデータはこのようになっております。 ▼シート1 A【年月日】 B【時間】 C【数値】 D【数値】 2011.09.17  17:00   10.50    12.21 2011.09.17  18:00   15.51    9.08 2011.09.17  19:00   5.51     99.22  ・  ・  ・ 2012.06.11  9:00    99.05    89.288 2012.06.11  10:00   29.05     80.20 2012.06.11  11:00   20.05     11.20 ▼シート2 A【7時】 B【8時】 C【9時】 ・・・ V【4時】 W【5時】 X【6時】 xxx    xxx    xxx       xxx    xxx    xxx シート2の各xxxには、下記の条件に当てはまるカウント数のみを表示したいです。 ★シート2のA1にある「2010.01.01」~シート2のA2にある「2012.03.02」の指定期間で ★シート1の指定時間(対象:シート1のB列)にあてはまる時間で ★その行のC列よりD列のほうが数値が多いカウント数 説明べたで申し訳ないですが、★の複数条件に当てはまるカウントした数値の計算方法を ご教授いただけましたらすごく幸いでございます。 本当に困っていますので、どうかよろしくお願いします。。

  • m0511
  • お礼率60% (3/5)

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

どんだけデータが入るか考えたくなくて、しばしば「1048576」までの式を書く人をみかけますが、通常はそういう計算の仕方はしません。 ゼロになるのは、計算式に与えた範囲の与え方が不適切なため、エクセルが止まってるからかもしれません。または単純にデータが間違っているからかもしれません。たとえば記録2のA列やC列など。 あるいは、補足の情報提供の数式が途切れているところで、何かミスってるのかも?しれません。 いずれにしても回答した方法では、あなたが補足質問で書かれたような手抜きの使い方をすると実用に耐えなくなりますので、使わないでください。 データ行がどこまで増えるか事前検討したくないのでしたら、あきらめてH列に個行の評価結果をYESかNOで示す数式を並べ、その結果をSUMなどの簡単な関数を使って答えを求めて下さい。 作成例: 「現在」シートの D1に開始の日付が年/月/日で記入してある H1に終了の日付が年/月/日で記入してある C11からZ11までに7、8、…6と記入してある 記録2の H2に =IF(AND(現在!$D$1<=A2,A2<=現在!$H$1,D2<G2),HOUR(C2),"") と記入し、リストの下端までコピー貼り付ける 「現在」シートに戻り D11に =COUNTIF(記録2!$H:$H,C11) と記入して右にコピー。 #参考 この方式で個別行の評価結果を並べてみることで、A列やC列に不適切データが紛れてないか確認することもできます。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

ANo3は,間違って他の方のご質問への回答を書き込んで投稿してしまいました。失礼しました。 改めまして。 シート1の A列に日付が年/月/日で記入してある B列に時刻が時:00で記入してある C列,D列に数値が記入してある シート2の A1に開始の日付が年/月/日で記入してある A2に終了の日付が年/月/日で記入してある A3から右に 7 8 9 … と記入し,以降 X3に 6 まで記入してある A4に =SUMPRODUCT(($A$1<=Sheet1!$A$2:$A$100)*(Sheet1!$A$2:$A$100<=$A$2)*(HOUR(Sheet1!$B$2:$B$100)=A3)*(Sheet1!$C$2:$C$100<Sheet1!$D$2:$D$100)) と記入,右にコピー。 言わずもがなですが,実際の表の配置に合わせて,寄せられた回答の数式を正しく直してから計算してください。

m0511
質問者

お礼

keithinさん回答ありがとうございます。 No3の件、了解いたしました。 こちらの回答が一番望むものに近いのですが、 実際の表の配置にあわせて数式を正しく直しましたが、 「0」と表示されてカウントがされませんでした。。 念のため実際の表の配置にあわせて正しくなおした数式を こちらに書き込みますので、どこがおかしいか、 またどのような下人が考えられるかご指摘いただけないでしょうか? ---------- 記録2の A列に日付が年/月/日で記入してある C列に時刻が時:00で記入してある D列,G列に数値が記入してある 現在のシートの D1に開始の日付が年/月/日で記入してある H1に終了の日付が年/月/日で記入してある C11から右に 7 8 9 … と記入し,以降 Z11に 6 まで記入してある =SUMPRODUCT(($D$1<=記録2!$A$2:$A$1048576)*(記録2!$A$2:$A$1048576<=$H$1)*(HOUR(記録2!$C$2:$C$1048576)=C11)*(記録2!$D$2:$D$1048576<記録2! ながながとホントに申し訳ないですが、よろしくお願いいたします。 ちなみに、バージョンはMicrosoft Office Excel 2007を使用しております。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

番号1,2,3がA,B,C列にあるとして。 番号4のD1セルに =IF(COUNTIF(A1:C1,"XX5F*"),HLOOKUP("XX5F*",A1:C1,1,FALSE),"") Excel2007以降を使っているなら =IFERROR(HLOOKUP("XX5F*",A1:C1,1,FALSE),"") と入れて下向けにコピー。 #ご利用のエクセルのバージョンによって,使える関数とか方法とか変わります。 ご相談投稿では,ご利用のソフト名は元より普段あなたが使ってるソフトのバージョンまで,キチンと明記することを覚えてください。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

初めに日付の入力なのですが2011.09.17のように入力しているのでしたら日付がシリアル値になっていませんので数値ではなく単なる文字列のようになっているということでしょうか。それとも2011/09/17のように入力してからセルの表示形式で yyyy.mm.dd のようにして表示させているということでしょうか。ここでは後者であると解釈してお答えします。 シート1では1行目が項目名で2行目から下方にデータが有るとします。作業列を作って対応することが分かり易く計算にも負担がかかりません。 シート1のE2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(D2>C2,HOUR(B2)*100000+A2,"")) 答えの表はシート2に作成することにしてA1セルには2010/01/01のように入力し、A2セルには2012/03/02のように入力します。 A3セルから右横にはい時間ごとの時間表示をさせることにしてA3セルには7:00と入力します。B3セルには8:00と入力します。 A3セルとB3セルを選択して右方法にドラッグコピーします。 これでAC3セルまでには7:00から6:00までは表示されますね。 A3セルからAC3セルまでを選択してセルの表示形式で h"時" のように入力すれば7時、8時のように表示することができます。 これらの準備をしたうえでA4セルには次の式を入力してAC4セルまで右横方向にドラッグコピーします。 =COUNTIF(Sheet1!$E:$E,">="&HOUR(A3)*100000+$A1)-COUNTIF(Sheet1!$E:$E,">"&HOUR(A3)*100000+IF(HOUR(A3)>=7,$A2,$A2+1)) これで4行目には指定された期間におけるその時間帯における件数が表示されます。

m0511
質問者

お礼

KURUMITOさん、回答ありがとうございます。 シート1のデータ量が膨大なため、 新しくセルを作成するというのを避けたいんです。。><

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

意味不明ですが、まずは、★の各条件毎に当てはまるセルにマーク(1)を付けて、AND関数で選択し、カウントしてはいかがでしょう。 指定期間 =IF(AND(A2-"2010/1/1">=0,A2-"2012/3/2"<=0),1,0) 指定時間 =IF(AND(B2-"10:11">=0,B2-"12:23"<=0),1,0) C列よりD列のほうが数値が多い =IF(C2<D2,1,0)

m0511
質問者

お礼

aokiiさん早速の回答ありがとうございます。 ★の条件をすべてまぜた計算式が知りたいんです>< シート2のA1~A2の指定期間の、シート1のB列の指定時間の、シート1のC列よりD列が大きい行数という意味なんです。 わかりずらくて申し訳ないです。。><

関連するQ&A

  • エクセルの文字列の数値を足す

        A    B     C      D   合計 1  ああ8  いい8  ああ6  ああ2   8 と、10列くらいある行(A列からJ列まで)があります。 ひとつのセルに文字と数値が入っています。 で、「ああ8」と「いい8」以外の数値を足したいんです。 上の場合、C列の「ああ6」とD列の「ああ2」を足して「8」になります。 毎回、手作業で足しているのですが、結構な手間で。。 何かいい案があればと思い、こちらへ投稿させていただきました。 オフィス2007を使用しています。ご教授ください。

  • Excel:数値が入力されている最終セルを常に他のシートに自動表示

    解りづらいかもしれませんが・・・。 複写機の検針用にexcelで集計および請求書を作成しようと思っています。 sheet1のA1に訪問日、B1に訪問時のカウント数、C1に使用カウント数、D1に控除カウント数、E1に請求カウント数、F1に請求金額と項目名を表示 A2に2007/1/31、B2に50、C2に0、D2に0、E2に0、F2に0 A3に2007/2/28、B3に100、C3に数式[B3-B2]、D3に5、E3に[C3-D3]、F3に[E3*5]という風に毎月累積していきます。 これをsheet2のA1にB列の訪問時のカウント数の最新数値を常に表示させたいのですが、どういう方法がありますか? 例のままですと最新月日が2007/2/28ですので、sheet2のA1の数値は「100」ですが、これが2007/3/31のB列の数値が「500」になったら、sheet2のA1も「500」になって欲しいのですが、そういうことは可能ですか? 可能なら、方法を御教示下さい。

  • エクセル関数をもちいてセルを検索するには?

    お世話になります。 早速ですが、以下のようなデータがあるとします。     A    B    C 1   1    100 2   0    200 3   1    10 4   1    20 5   0    30 6   0    300 7   0    10 8   1    30 9   0    5 10  0    10 A列には0か1が、B列にはランダムな数字が並んでいるとします。 これに対し、C列にはA列の0の数を数えて、仮に5個目のB列の値を返したいです。 C1ならA1から0の数を数えて5個目、つまりB9(300)の値を返したい。 C2ならA2から0の値を数えて5個目、同じくB9(300)の値、 C3ならC3から0の値を数えて5個目、つまりB10(10)の値を返したい。 最終的には5個めではなく、任意の数字にしたいのですが、 このような値を返すにはどのような関数をもちいたらよろしいでしょうか? COUNTIFやINDEXでできるのではと思いましたが、 カウント数が指定数を満足させる条件がわからず行き詰りました。 どうかご指導お願いいたします。

  • エクセルでセル内の文字列を検索して組み合わせごとに分類する

    Excel2003について質問致します。 A列にはそれぞれ[a, b, c, ...]とカンマとスペースで分けられた文字列が複数個格納されています。 B列には演算式によって、A列に"a"と"b"が含まれていれば"1"を返し、"c"と"d"と"e"が含まれていれば"2"を返し…全てに当てはまらない場合は"99"を返す、という条件で値を入れたいと考えております。 組み合わせの数は9つあり、if文で分類しようと思いましたがネスト制限によりエラーが出ました。 良い案をお持ちでしたら是非ご教授頂ければと思います。

  • エクセルのシート1にある文字や数値をシート2の指定した場所へ飛ばす事が

    エクセルのシート1にある文字や数値をシート2の指定した場所へ飛ばす事が出来ますでしょうか? 出来るようであれば、ぜひご教授ください。 シート1のA列にNo.、B列に東京23区名、C列に数値A、D列に数値B、E列に数値C、F列に計、最後の行に合計のリストがあります。 例えば、シート1のリストの文京に数値Aが11、数値Bが12、数値Cが13。新宿に数値Aが14、数値Cが15。杉並に数値Bが16。練馬に数値Bが17、数値Cが18と入力された時、シート2の指定の場所、ABC1にNo.の2、ABC2に文京、A3に数値Aの11、B3に数値Bの12、C3に数値Cの13、ABC4に合計の36。DEF1にNo.の4、DEF2に新宿、D3に数値Aの14、F3に数値Cの15、DEF4に合計の29。ABC6にNo.の5、ABC7に杉並、B8に数値Bの16、ABC9に合計の16。DEF6にNo.の7、DEF7に練馬、E8に数値Bの17、F8に数値Cの18、DEF9に合計の35。 このような、文字と数値をシート2へ出力する事が出来ますでしょうか? ようするに、シート1のリストに数値を入れたら、シート2へ自動的にNo.・文字・数値などが表示される。 説明が下手ですみません。 文字での説明は難しいですね。少しでもわかりやすく表にしてみました。 シート1    A   B      C      D      E      F 1  No.  区名   数値A   数値B   数値C    計 2  1   千代田    3  2   文京    11     12      13     36 4  3   中野 5  4   新宿    14             15     29 5  5   杉並          16             16 6  6   世田谷 8  7   練馬          17      18      35 9  8   台東 10  9   荒川 11  合  計     25     45      46     116 シート2    A    B     C     D     E     F 1       2                 4 2       文京              新宿 3  11    12    13     14          15 4       36                29 5 6       5                 7 7       杉並              練馬 8       16                17     18 9       16                35 10 今月はこのようになったり、来月は他の区になったりします。 おわかりになりますでしょうか? 出来ましたら、具体的にわかりやすくご教授をお願い致します。 それでは、宜しくお願い致します。

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • Excel 複数セル内の文字列を検索する関数

    シート1にはA列に会社名、B列に業種が入っています。シート2のC列にシート1のA列の会社名を含む文字列が入っています。ここで、C列にA列の会社名が含まれていた場合、シート2のD列に会社名に対応する業種を入力したいと考えています。データ数は100-200行ほどです。 関数で表現したいと考えているのですが、簡潔に表現する方法が思いつきません。ご協力お願いします。

  • エクセルで隣のセルの内容によって文字を入れる

    エクセルです。 A列に数値が入っています。 B列にはA列の数値に応じて 文字を入れたいと思っています。 例:左がA列の内容で右がB列に入れたい文字 -1~-2 →A -0.3~-0.9 →B 0.5~-0.2 →C 0.6~1. 2→D -- →-- 上記のような規則でB列に入れる場合のB列に入れる式を教えて下さい。

  • *EXCEL*2シートにあるデータを同じ文字列があるか検索して隣のセルを関連づける

    タイトルではわかりにくいかと存じますがExcelの機能につきましてご質問です。 シート1の列Aに「文字列a」~「文字列z」      列Bに「文字列aaa」~「文字列zzz」が入力してあるとします。 シート2の列Dにシート1の列Aに入力してある文字列と同じ文字列が 入力してあるのですが、順は不同となります。 このときシート2の列Dの横(列E)に対応するシート1のAの横列(B) の文字列を表示させたいのですが、なにかよい方法はございます でしょうか。 シート1         シート2 A  B          D   E a  aaa         d   ddd ←この部分を関数などで b  bbb         a   aaa  表示させる c  ccc         b   bbb d  ddd         c   ccc ご回答いただけますと大変ありがたいです。 よろしくお願いいたします

  • 数値0をカウントしない。エクセル2007でデータベースを作っています、

    数値0をカウントしない。エクセル2007でデータベースを作っています、B,C,D列に別のシートから数値をコピーしています、元データに数値が有ればコピーされ、なければ0.00と表示しています。 各列の最下段にデータ数、平均値などを表示させたいのですが0.00のセルををカウントさせない方法を教えて下さい。B3からB100まで準備し、現在はB10までしか数値入力されていません、最下段B101にはB3からB10までの平均値などを表示したいのです、B100まで毎日入力が有ります。

専門家に質問してみよう