• ベストアンサー

エクセルかアクセスでの表検索

エクセルの表検索についてご回答お願いします。 表A    1月 2月 3月・・・12月 1日  A  B  C 2日  F  D  E 3日  X  Y  Z 4日  O  P  Q  :   : : : 31日  L  M  N この表Aの中でたとえば3月31日はNというように 別のシートにでしたいのですがINDEX・・・・MATCH関数でいけるかなと思ったのですが・・・うまくいきません。 またアクセスではこのようなことができるのでしょうかよろしくお願いいたします

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

列方向が月(1~12)、行方向が日(1~31)と決まっているなら MATCH関数無しでも =INDEX(SHeet2!$B$2:$M$32,DAY(A1),MONTH(A1)) (月と日の項目部分は表の範囲に含まない) A1には3/31と入力、表示形式がm"月"d"日"で表示できます。 MATCH関数を使う場合は =INDEX(Sheet2!$A$1:$M32,MATCH("31日",$A$2:$A$32,0),MATCH("3月",$B$1:$M$1,0)) "31日"と"3月"はセル参照してください。

kou00528
質問者

お礼

ありがとうございました。 うまくいきました

その他の回答 (3)

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

(例データ)A1:D7(実際はA1:M32以上だが簡略化) 月日 1月 2月 12月 1日 A B C 2日 F D E 3日 X Y Z 4日 O P Q 5日 R S T 31日 L M N (関数式) 上記以外の範囲の1セルに =INDEX($A$1:$L32,MATCH("31日",$A$1:$A$32,0),MATCH("12月",$A$1:$M$1,0)) (結果) Nとなる。 (前提) 日は全角文字で「31日」月も全角文字で「12月」を仮定している。前後にスペースを入れないこと。 2004/1/31と入れて、31日と表示させていると、前提が 変るので注意。質問文では31だけ半角になっているが 修正した。 (注意) 日付列は内容的にA2からはじまるが、$A$2:$A$32としないで$A$1:$A$32にすべきです。同じく月の行も$A$2:$M$1としないで$A$1:$M$1にする。

kou00528
質問者

お礼

ありがとうございました うまくいきました

  • ta123
  • ベストアンサー率51% (95/186)
回答No.2

表Aに名前を定義し、セルA1に入力した日付に対応したセルの値を求める場合は以下の式で参照可能と思います。 =INDEX(表A,DAY(A1)+1,MONTH(A1)+1)

kou00528
質問者

お礼

ありがとうございました トライしてみます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

INDEX関数を使って可能です。 =index(sheet1!日付と付きを除いたデータのある範囲,日を表す数字,月を表す数字) の様にします。

関連するQ&A

  • また教えてください!Excelで作った表で・・・

    助けてください!!  Excelで作った3つの表があります。 ※1つのファイルの中に3つのシートとして作られています。 (1)元となるデータが入っているもので、  (例) 1月1日 1,000    1月2日  500   ~    2月1日 1,500    2月2日 1,800 …と、連続した日にちと数値が入力されています。(数年分) (2) (1)の表から部分的にリンクさせて1カ月分を抜粋しています。  (例) 1月1日 =(1)!A1     1月2日 =(1)!A2 1月3日 =(1)!A3 ←多少違うかもしれませんが、こんな感じの式?を入れてデータを引っ張ってきています。 (3) (2)と同じですが、(2)に抜粋したデータの次月分が入力されています。  (例) 2月1日 =(1)!A32     2月2日 =(1)!A33 2月3日 =(1)!A34    (2)と(3)は1つ1つのデータは違うものの、表の作りとしては同じです。 (2)や(3)のような表が、すでに何カ月先の分まで それぞれシートとして作られているのですが、 その表の内容が正しいか確認したいのです。 例えば、2月のデータを表(1)から引っ張ってきたいのに  (例) 2月1日 =(1)!A32→“(1)!A31”になっている…など 違うセルが入力されていないようにしたいのです。   それで、考えたのは すでに終わった月の表は正しい式が入っているのだから、 正しい表と新しい表を比べられないか?という事です。 (回りくどくてスミマセンm(__)m) でも、引っ張ってくる元のセルが違っているので 単純に比較できず、関数にも詳しくないので、どうしたらいいのか分かりません。 間違えないように、初めからもう一度作る・・・というのはナシで、比較をして確認したい場合でお願いします。 また、比較ではなく、他に方法がありましたら教えてください。 不明な点は補足をさせていただきますので、よろしくお願いします。

  • エクセルでSheet1の表を参照して条件に合った値を返したい

    エクセルでSheet1に   A   B   C 1 1月1日 10時 10 2 1月1日 12時 25 3 1月1日 14時 17 4 1月2日 10時 15 5 1月2日 12時 23 6 1月2日 14時 19 ・ ・ ・ というような表があります。 Sheet2に   A   B   C  D  1 日付  10時 12時 14時  2 1月1日  3 1月2日  ・ ・ ・ の表があり、Sheet2のB2からD3にSheet1の表を参照して 条件に合うC列の値を返したいのです。 (例えばSheet2のB2には、1月1日の10時なのでSheet1C列の10が入る) VLOOKUP関数等を使って試してみましたがうまくいきません。 ご教授お願い致します。

  • エクセルで順位表を並び替えたい。同順位表示方法は?

    エクセルで順位表を別シートに並び替えたいと考えていますが、同点になった場合はどうしたらよいでしょうか? シート1で集計した結果を参照し、シート2に上から順に1位から表示させる表を作りたいです。 試行錯誤の結果、下記まで作業しました。 ========= <シート1>     A        B       C           (1)商品名  (2)販売額  (3)ランキング  1    a     1000       2 2   b     1500      1 3  c     1000      2 4  d     500      4 5  e     300      5 (1)手入力 (2)SUM関数で集計した値 (3)RANK関数 <シート2>     A        B    C (3) ランキング  (1)商品名 (2)販売額 1 2 3 4 5 (3)手入力 (2)INDEXとMATCH関数 (3)INDEXとMATCH関数 ========= 1)シート2の(3)ランキングをシート1を参照し降順で自動表示させる方法を教えてください。 今は手入力なので、同順位があった場合にずれが生じてしまいます。 2)シート2に同順位表示のまま並び替えする方法を教えてください。 INDEX関数とMATCH関数を使っていましたが、 シート1で同順位表示されていた箇所が、シート2で表示できませんでした。 どうぞ宜しくお願いいたします。

  • エクセルVBAの質問です

    エクセル2000で勤務表を作成しています 2009年7月というシートに2つの表があり、「表1」はC列に10名の氏名があり 各行の(F~AJ)には6月21日~7月20日までの毎日の出退勤(○、休、半等) を記入します。 「表2」は「表1」を暦月に変換するため7月1日~7月31日(F~AJ)となっていて、 表1を作成するとC列の氏名及び7月1日~7月20日(Q~AJ)までの出退勤も(F~Y)へ 同時に入力されるようにしてあります。 さて、新規シート2009年8月を作り「表1」に氏名(入退社で増減等の変更が あります)と1ヶ月分の出退勤を入力後、以下のことをVBAで行いたいと思います。 ボタンにより、2009年7月シートの「表2」と氏名がマッチする行に「表1」の7月21日~7月31日(F~P) の出退勤のみを「表2」の(Z~AJ)にコピーするようにしたいのですが可能でしょうか。 皆様のお力添えをお願いできればと存じます。

  • エクセルで検索結果を範囲から検索して貼りつける

    出退勤時間の表を作成しようと思っています。 実際あるエクセルはsheet1にsheet名をシフトと入れて B3に早番(1) C3 早番(2)   D3 早番(3)  E3 早番(4) F3 普通番(1) G3 普通番(2) H3 普通番(3) I3 普通番(4) J3 普通番(5) K3 普通番(6) L3 遅番(1) M3 遅番(2) N3 遅番(3) O3 遅番(4) P3 遅番(5) Q3 遅番(6) B4から出勤時間の B4 5:30 C4 6:00  D4 6:30 E4 7:00 F4 7:30   8:00 8:30  9:00 9:30  10:00   L4 13:00 13:30 14:00 14:30 15:00 Q4 15:30 B5からは退勤時間の B5 14:00 C5 14:30 D5 15:00 E5 15:30 F5 16:00 16:30 17:00 17:30 18:00 18:30 L5 21:30 22:00 22:30 23:00 23:30 Q5 0:00 セル番号抜かしちゃっててすみません。 A8からA48まで名前 7の行に1日から31日まで(B7が1日・C7が2日…AF7が31日)になっています。 この中の B8からAF48のセルに 早番(1) 早番(2) 早番(3) 早番(4)    普通番(1) 普通番(2) 普通番(3) 普通番(4) 普通番(5) 普通番(6)     遅番(1) 遅番(2) 遅番(3) 遅番(4) 遅番(5) 遅番(6) のどれかを検索して貼りたいです。 検索する場所ですがsheet2に1週間分(1日から7日までとします)の出勤時間の作成しようと思います。sheet2の名前が1日~ sheet3が8日~と入れようと思います。 週単位か1日単位でのsheet作成を迷ってます(週初めが1日といつも決まっているわけではないので)1日単位ならsheet2名前は1日sheet3名前2日になります。 実際にsheet2を各場所に貼りだして見せるものにしたい為見やすい用に作りたいです。 載せてる情報は現在は            22日~27日                        現場A            通常 9:00~終了まで   A8さん            早出 9:00~17:30   A10さん  A12さん            遅出 13:00~21:30   A9さん   A13さん            現場B            通常 8:00~終了まで   A11さん  A18さん            早出 8:00~16:30    A14さん  A11さん            遅出 13:00~21:30    A16さん  A17さん            現場C            通常 7:30~終了まで   A15さん A25さん A35さん            早出 7:30~16:00   A22さん A32さん            遅出 13:00~21:30   A21さん  A19さん みたいな感じで貼りだしています。 月単位でエクセルを作成します。 エクセル関数は初心者でマクロはちょっとしかやったことないです。 sheet2(週か日)の作成でsheet1シフトの中のB8からAF48が検索されて入力されればいいなと思っています。どのような関数を入れればいいかご教授ください。

  • 複数シートから検索し、その行から15列下までを抽出したい。

    使用しているのはWINDOWS XP EXCEL2000です。 マクロ、VBはあまりよくわかっていません。 ひとつのファイルに6sheetあります。 シートY1~Y6があり、シートY1のB1に入力されたデータと同じものをシートY1~Y6全てから検索し、 その行から15列したまでを抽出するということをしたいのです。 現状は1シートのみからの検索で、A3からA17までMATCH関数とINDEX関数が入っていて抽出しています。 (下記のように関数が入っています。)  YIシート A3 → =MATCH(B1,T1_A1!D:D,0) B3 → =INDEX(T1_FMRA!E:E,A3,1)  YIシート A4 → =A2+1 B4 → =INDEX(T1_FMRA!E:E,A4,1) ↓ ↓  YIシート A17 → =A16+1         B17 → =INDEX(T1_FMRA!E:E,A17,1) これをA1に入力されたデータを全シートから(Y1~Y6)検索、抽出する方法が知りたいのですが・・・ 説明がわかりづらくすみません。 よろしくお願いいたします。     

  • エクセルで一覧表から検索

    ご教授をお願いします。 在庫表を作りたいと思っています。 sheet1に下記のようなデータの一覧表があります。 (AS400からデータを取り込みます) 納入日     品番   数量 20071010  1111-1111  1000 20071010  2222-2222  2000 20071011  3333-3333  2000 20071011  1111-1111  3000   ↓     ↓    ↓   以下続く・・・ sheet2に、         20071010  20071011 ・・・  1111-1111   1000    3000  ・・・            ↑     ↑   となるように↑矢印部に検索させる関数はないでしょうか? 10月中に在庫表を完成させなければなりません。 宜しくおねがいします。

  • エクセル予定表のリンク

    エクセルで年間予定表シートと月予定表シートをリンクさせています。 年間シートは,A3から1年分の日付が縦1列に並んでおり,A1に西暦を入力すると曜日が変化する万年歴になっています。B列にその日の予定を入力しています。 月予定表シートは,4月がA列B列,5月がC列D列,・・・と並んでおり,日付も予定も年間シートからリンクしています。 ここまでは,「=年間予定表!B7」というような式で十分だったのですが,2月が閏の場合に月予定表の3月1日のセルが年間予定表の2月29日を参照してしまいます。 年間予定表のA337が3月1日の場合はそのまま参照し,2月29日の場合は次のセルを参照する関数はないでしょうか。

  • 【EXCEL・関数】2つの表を元にカウントする方法

    その日に作業をした人数(2つの表を元ととして)を数える関数がわかりません。 [X作業]      [Y作業]  1月1日      1月1日 A  20      A  10 B  5       B   C         C  30  計 1.5人     計  1.5人   上のような作業別の表を同じシートに作りその日に作業をした人数を数えたいです。 ただ、この例でいくと1月1日に作業をした人数は当然X、Y共に2人(合計4人)ですが、2つの作業をした人は、0.5人としてカウントしたいです。つまり、AさんはX作業とY作業をしているので、0.5人として数え、X作業・Y作業の合計人数を1.5としたいです。 それぞれ作業別の合計人数をカウントしたいのですが、その関数がわからず、現在のところ(とりあえず作業をしなかった日は空白にしたいので)、 =IF(COUNT(○○:○○)=0,"",COUNT(○:○))  という関数を利用しています。ここから上記のような0.5とカウントする方法が全くわからず困っています。 どうかご教授お願いいたします。

  • Excel 項目を統合、抽出して別シートをつくりたい

    連続投稿失礼いたします。似たような行き詰まりですが、分割して投稿します。 同じく Excel2003 の表 で 日付 収支 支払 収入 会社 項目A 1月1日 500 -100 +600 A社 X 1月1日 -200 -200 0 A社 Y 1月1日 300 0 +300 B社 Z 1月2日 100 0 +100 A社 X 1月2日 100 -500 +600 C社 X ~ 順次 積み立て入力 といった表から 1.別途ワークシートに 集計表を作成するにはどうすればいいでしょうか。 「日付で統合」 1月1日 600 -300 900 A、B X,Y,Z 1月2日 200 -500 +700 A、C X 「データ」-「集計」で エクスプローラのフォルダツリーのように展開、折りたたみはできるのですが、 そちらではなくて、別シートに抽出したい。 2.条件を指定して抽出するにはどうすればいいでしょうか 「A社」抽出 1月1日 500 -100 +600 A社 X 1月1日 -200 -200 0 A社 Y 1月2日 100 0 +100 A社 X 項目からA社を抽出することはできるが、そこから別ワークシートに 行を移植、積み重ねていく方法がまったくわかりません。 こちらもやはりマクロなり、スクリプトを作成しないといけないでしょうか。 おそらく初歩的なスキルだと思うのですが、どうかご教授いただければ幸いです。重ねてよろしくお願いいたします。

専門家に質問してみよう