• ベストアンサー

EXCEL関数を使って抽出したい。

EXCEL関数を使った作り込みをしたいのですが、悩んでいます。 以下の様なDBがあって(ちなみに数値データで異なる日付間でデータが重複することはありません。あるデータは必ず唯一その日付のものです。)、 日付1   日付2  ・・・ データ  データ データ  データ  ・・・ データ  データ このDBからあるいずれかのデータを入力すると同じ列の日付を表示させると言うものです。なお日付は当月1~31とします。 ヒントになる助言でも結構です。 詳しい方いらっしゃいましたら教えて頂きたいです。 ちなみにオフィス2000です。 お願いします。

  • 5244
  • お礼率66% (92/138)

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.5

No3です よく考えたら作業セルの必要なかったです。 日付回答欄に {=SUM((データ領域=日付入力セル)*日付領域)} の一発で出来ます。 データ領域:データの入っている範囲(No3の回答で言うとB3:D5) 日付領域:日付の入っている範囲(同じくB2:D2) 入力は =SUM((データ領域=日付入力セル)*日付領域) の入力後shift]+[ctrl]+[Enter]で ただあまりデータが多いと計算に時間がかかる可能性があります。

5244
質問者

お礼

さっそく試してみました。 感動しました。 てっきりINDEXとかVLOOKUPなどの関数を想定してたのですがまさかSUMで出来るとは思ってもいませんでした。 さらに入力と回答欄を行方向に拡張して実用的にしようと思っています。 ご回答ありがとうございます。

その他の回答 (5)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

A2:D30にデータ、D2に検索したいデータがあるとき適当なセルに  =OFFSET($A$1,0,SUMPRODUCT((A2:C30=D2)*COLUMN(A2:C30))-1) で行けるように思います。 データ範囲は実際のシートに合わせて変更して下さい。なお検索データが表中にない場合は#REF!エラーになりますので適宜エラー処理を追加して下さい

5244
質問者

お礼

初級レベルなので関数の意味すら解からないのでコピペして範囲修正したらうまくいきました。 みなさまの良回答を元に実データを使ってさらなる作り込みをして実用化しようと思っています。 ご回答ありがとうございます。 本当に助かりました。

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.4

こんばんわ ご質問から外れるかもしれません。 関数を使ってとのことですが、使わなくても日付は出せます。 アクティブなセルの列と行は、色が変わるなり立体的に見せる(セルB2にカーソルがあればグレーの部分のBと2が目立ちますよね)ことと画面分割を利用します。 以下がやり方です (1)12月1日にカーソルを合わせてメニューの[ウィンドウ]-[分割]を選択。ワークシートに太線が12月1日に出ます。(もし他の位置に太線が出た場合はマウスでクリックすれば動きますので、縦の太線は12月1日と2日の間に、横の太線は日付のすぐ下に移動させます) (2)もう一度、メニューの[ウィンドウ]を開いて今度は[ウィンドウ枠の固定]を選択。 (3)キーボードで[Ctrl]キーを押しながら[F]キーを押します。(マウスなら[編集]-[検索]、または望遠鏡アイコン) (4)白の長四角の中に探したい「データ」を入力して、”セル内容が完全に……”のすぐ左の□にチェックをつけて[次を検索]をクリック。 出したい日付がすぐ見つかります。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

データが重複していないことが前提ですが 一部作業セルを利用します A  B  C  D・・・・・ 1  <  作用セル  > 2 12/1 12/2 12/3 12/4 3 data data data data 4 data data data data 5 data data data data 作業セルA1に =NOT(ISERROR(MATCH(日付入力セル,A3:A100,0))) を入力し右方向にコピー この際に日付セルは絶対参照で。 日付回答欄には {=SUM(A1:E1*A2:E2)} を入力、E1 E2の部分は検証したのが5日分なので実際の場合はデータの最終列を選択してくださ 実際の入力は =SUM(A1:E1*A2:E2) を入力後[shift]+[ctrl]+[Enter]で行います。 後は、日付回答欄の書式を日時に設定で完了。

noname#64582
noname#64582
回答No.2

しろうとです。 少し考えてみました。 データは3行分だけですか?  3行だったら何とかなりました。あまりにも美しくないけど。 例)  A   B   C 1列目 12/1 12/2  12/3 2列目  1   4   7 3列目  2   5   8 4列目  3   6   9 とあれば、5行目に1列目(日付)をコピペします。見せたくなければ非表示にすればいいです。 入力セルを仮にE1とします。 日付の回答欄をF1とします。 F1セルに =IF(ISERROR(HLOOKUP(E1,A2:C5,4,0))=FALSE,HLOOKUP(E1,A2:C5,4,0),IF(ISERROR(HLOOKUP(E1,A3:C5,3,0))=FALSE,HLOOKUP(E1,A3:C5,3,0),HLOOKUP(E1,A4:C5,2,0))) データの行数があまり多いとこの方法は無理ですけどね。 IF関数のネスト数まで(7つまででしたか)なら対応できます。式を書くのにめんどくさいのが難点。

5244
質問者

補足

ご回答ありがとうございます。 即答でこんな複雑な関数式が・・。 唖然としました。すばらしいの一言です。 説明不足でたびたび申し訳ないのですが、一日あたりおおよそ100行分のデータでお願いしたいです。大変恐縮です。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>作り込みをしたいのですが あまり聞きなれない表現です。 関数を使って(オートフィルタやVBAを使うのでなく)実現したいということでしょう。 >ちなみに数値データで異なる日付間でデータが重複す ることはありません。あるデータは必ず唯一その日付のものです この意味がわかりません。 例をあげる場合、「データ」と抽象化しないで、(仮のものでも)具体的な例を入れ、それが何に当たるデータなのか説明した方が、回答者・読者にイメージがわいて判りやすいと思う。 >抽出したい 関数で条件に合ったものを、別シートに抜き出す(1つの)方法は、 googleで「imogasi方式」でWEB照会してもらえば、沢山例が出ます。 ほかにもOKWAVEで、「関数 抜き出し 抽出」などで検索してみては。

5244
質問者

補足

ご回答ありがとうございます。 説明不足でしたね。 EXCELを単にテキスト入力の用途ではなく関数を使った作り込みといった表現が正しかったかもしれません。 あとデータを具体化してみると、 12/1  12/2  12/3    入力欄 日付の回答  1     4     7       1   12/1  2     5     8         ↑  3     6     9       みたいな答え いずれのデータも単一のものです。

関連するQ&A

  • Excel関数で当月の第一日曜日の日付を表示したい

    Excel関数で当月の第一日曜日の日付を表示したいです。 例えば2009年7月の第一日曜日は7月5日です。 このように当月の第一日曜日の日付を○月○日のように 文字列で表示させる関数を教えてください。 ちなみに、同シート内には当月の開始日を入力しています。 以上宜しくお願い致します。

  • EXCEL関数にて

    いつもお世話になっております。 Excelの関数にて質問なのですが、下記のようなデータが セルに入っているとします。 A列 B列    C列    D列  1  06/06/10 06/07/01 06/06/04 2  06/06/07 06/06/25 06/06/10 3  06/06/15 06/06/20 06/06/15 2  06/06/15 06/06/01 06/06/20 3  06/06/01 06/06/07 06/06/09 2  06/06/01 06/06/02 06/06/30 処理1.A列が1で、且つ日付が最大値(最小値)のもの 処理2.A列が2か3で、且つ日付が最大値(最小値)のもの AND関数とMIN関数とMAX関数を、使って色々ためしているのですが うまくいきません。 どういった書式で求められるのか、ご教授頂けませんか? それから単純にB列の最小値を得ようとしても、求められないのは 重複してたりするからですか?? 重ねて、教えていただけると助かります。

  • ExCEL2000合計

    A列になにかしらのデータ(ランダムです。ちなみに日付です) が何行がおきにならんでいます (何行おきかはランダムです) そのデータ(日付)ごとにC列に数値があります。 数値もランダムです。数値の個数もランダムです。 A列にデータの入っている行にだけその日付ごとの数値の合計値をだしたいのです。 関数とかつかってできますでしょうか?

  • Excel関数

    Excel2010を使用しています。 A~E列 及び H~K列の1,000行目くらいまで、1ケタから5ケタの数字を入力しています。 重複した数字がないか確認したいのですが、適した関数はありますか? (重複していた場合、指定したセルに「重複」と出るような関数など) セルは空欄の場合もあります。 ご教示いただければ幸いです。よろしくお願いします。

  • 【Excel】複数の条件を設定した重複セルの抽出

    【Excel】複数の条件を設定した重複セルの抽出 例えば、A列にA社からD社のデータが行に複数個ずつ並び、B列にそのクライアントに問い合わせた日付が入力されている場合。 A社に問い合わせた日付は1/1、1/3、1/5。B社に問い合わせた日付が1/1、1/1、1/3、1/5、1/5となっているデータで、 B社の3~7行目の日付で重複している1/1と1/5の行のみを抽出する方法ってありますか? 作業自体はB社だけでなく、複数あるので、関数か何かで出来る方法があれば教えていただきたいです。

  • Excel関数について

    Excel関数について Excel2003を使用しております。 B列に日付を入力しており、E列には数字を入力しております。 B列には必ず日付を入力しておりますが、E列には数字を入力していない場合もあり、 日付ごとにE列に入力した数字をカウントしたいのですが、 どのような数式を使用すれば確認出来るでしょうか? 日付ごとの数字の合計ではなく、あくまでもカウントになります。 ご教示頂きたく、何卒宜しくお願い致します。

  • EXCEL2000の関数

    EXCEL2000でデータの整理をしています。 どういうデータかというと... A列にステップ数、B列に各ステップでのデータ(数値)が入っています。 このときデータの最大値にのときのステップ数を表示したい(最大値の隣のセルの数値を表示したい)のですが、どのような数式を入力したら良いのでしょうか?

  • Excel2003 Match関数について

    WINXP Excel2003 VBA データベース検索について教えて下さい。 Sub データ表示() Dim no As Long With Sheets("データ入力") On Error GoTo エラー処理 no = WorksheetFunction.Match( _ .[B1], [データ].Resize(, 1), 0) On Error GoTo 0 .[B5] = [データ].Cells(no, 2) .[D5] = [データ].Cells(no, 3) .[E5] = [データ].Cells(no, 4) .[F5] = [データ].Cells(no, 5) .[B7] = [データ].Cells(no, 6) .[C7] = [データ].Cells(no, 7) .[D7] = [データ].Cells(no, 12) .[B9] = [データ].Cells(no, 8) .[B11] = [データ].Cells(no, 9) .[B13] = [データ].Cells(no, 10) .[D13] = [データ].Cells(no, 11) Exit Sub エラー処理: MsgBox "該当するNo.のデータはありません" .[B5:F5].ClearContents .[B7:F7].ClearContents .[B9:F9].ClearContents .[B11:F11].ClearContents .[B13:F13].ClearContents End With End Sub というプログラム(EXCEL極意6VBAという参考文献の一部を利用)で、1枚のシート(”データ”という 名前のデータベース)51列ほどあります。からキー(一番右端の列をキー)の値と一致したデータを 別のシートへ呼び出す方法です。 そこで、こまっているのが、あるキーだとちゃんと呼び出してくるのに、肝心の希望のキーだと、エラーになって該当データ無となってしまうのです。 簡単にかくと ”データ”というデータベース A列     B列      C列       D列・・・・・・・・ AY列 001    あああ     AAAA     2012/08/20   120821002 ←このAY列をキーとして検索 をかけるとエラー処理にいってしまう。 B列”あああ”だとうまくデータを検索してくる。 Vlook関数だとキーとなるデータは一番左端にないといけないということなのですが、Match関数もそうなのでしょうか? ちなみにオートフィルターでのVBAだとうまくいくのですが、・・・ もしこのつたない文で、御理解いただき、おわかりになる方が、いらっしゃれば、ご指導ください。 もしくは、Match関数以外での検索方法でもけっこうです。 最終的に希望する結果は、D列の日付(重複する日付有)で絞り込み、AY列のキー(重複するデーターは無)でその行のデーターを別シートに表示させること

  • 【Excel】重複するデータの検索

    Excel2003を使用しています。 A列にデータが入力されていたら、同行のC列の値(文字列)を取り出すようにしています。(VLOOKUP関数を使用) A列のデータは4桁の数値なのですが、そのデータの数値が重複している場合があって、そのときは行番号の小さい方のC列の値が取り出されますよね? データは同じでも別の行に入力されていれば、C列に入力されている値(文字列)も違うので、それが取り出されるようにしたいのですが、そういうことは可能でしょうか?

  • EXCEL関数

    おせわになっておりますm(__)m 先日下記のような質問をここでさせていただきました おかげさまで完璧に解決いたしたのでありますが、 その関数の意味がいまいちわからないのです。 どのように考えればこんな関数が考え付くのでしょうか? 合計を出したいのですが、問題があるのです。 その表はこういうふうに並んでいます。 まずタイトルがあります。 A1 日付 B1ファイル名 C1ファイルのサイズ その下にだーっとデータが並んでいます。 そしてそれは日付ごとに並んでいます。 ファイル名の数はばらばらです。 2つデータがあるときもあれば3つだったり4つだったりします。 データの数さえそろっていれば、D2にでも、SUM関数をいれてオートフィルで合計 値をだせるのですが、 データの数がバラバラなので、 現状だと、手作業で日付ごとに合計しているような状態です。 D列に日付ごとの累計を入れたいのです どうか宜しくお願い致します ちなみに >ファイルサイズの合計です >宜しくお願い致しますm(__)m >もうすでにC列には数値(ファイルサイズ) >がでているので、それぞれ合計すればいいだけです 上記のような質問です。 それで下記のような答えを頂きました (参照失礼致します) D2を選択して、 =IF(A2<>A3,SUMIF(A:A,A2,C:C),"") をコピペして、セルの右下の■を必要なだけ、下方向へ伸ばしてください。 もし、累計が一番最初の行に表示したいのであれば、 =IF(A1<>A2,SUMIF(A:A,A2,C:C),"") でやってみてください。 上記の関数で完璧にできました (arukamunさん、ほんとうにありがとうございます(__)) これはどういうことから導き出しているのでしょうか?

専門家に質問してみよう