• ベストアンサー

Excel 検索に関する関数について教えてください

色々と試しましたが、どうしてもうまくいかないので教えてください。 A列に休日を除いた日付(生産カレンダー)が入っています。 日付は手入力です。 A列 2008/5/14 2008/5/15 2008/5/16 2008/5/19 2008/5/20 2008/5/21 B1セルに任意の日付が入力された時、C1のセルに任意に入力されている数値分だけ前の日付をA列を参照してD1セルに表示したいのです。 例えばB1セルに2008/5/20、C1セルに3と入力された場合、D1セルには2008/5/20の3つ上のセルの値、2008/5/15を表示させたいのです。 生産カレンダーは列でなく、行にしても可です。 LOOKUP系やOFFSETなども複合したりして試してみましたが、うまくいきません。 ご教授よろしくお願いします。

  • T-KW
  • お礼率66% (12/18)

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

  • ベストアンサー
  • k_mori
  • ベストアンサー率62% (23/37)
回答No.3

こんにちは 検索関数についてですが index関数とmatch関数の複合ででます T-KWさんの場合、a列に日付、b1に任意の日付、C1に数値、D1に結果表示ということでしたので、 式は以下のようになります。 =INDEX(A1:A6,MATCH(B1,A1:A6)-C1) しかし、これですと、数値がマイナスになったり、B1もしくはC1が空白の場合、エラーがでます。 エラー回避を組み込んだ式は以下のとおりです =IF(OR(B1="",C1=""),"",IF(MATCH(B1,A1:A6)-C1<=0,INDEX(A1:A6,1),INDEX(A1:A6,MATCH(B1,A1:A6)-C1))) なお、数値が0、INDEXの中の1の数値を変更すれば、それ以下になると一番最初の日付が出るようになります。 もちろん、範囲を配列(A列)だけにしても、Okです 関数はおく深いので、いろいろやってみるのもいいと思います がんばってください

T-KW
質問者

お礼

丁寧な回答、ありがとうございます。 しっかり理解して、今後に役立てます!

その他の回答 (3)

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

利用関数が変わっただけですが、MATCH関数の代わりに LOOKUP関数を使ってやった。 例データ A列    B列    C列    D列  2008/5/14  2008/5/20 3 2008/5/15 2008/5/15 2008/5/16 2008/5/19 2008/5/20 2008/5/21 D1の式は =OFFSET(A1,LOOKUP(B1,$A$1:$A$100,ROW($A$1:$A$100))-C1-1,0)

T-KW
質問者

お礼

回答、ありがとうございます。 色々な方法があるんですね。早速試してみます!

  • mako_sea
  • ベストアンサー率47% (62/130)
回答No.2

OFFSETを利用するなら、MATCH関数を利用すれば可能ですね。 =OFFSET(A1,MATCH(B1,A1:A6)-C1-1,0,1,1)

T-KW
質問者

お礼

ありがとうございます。 OFFSET&MATCHでも出来ました!

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 因みに、B1、C1の正当性チェックは考慮していません。 =INDEX(A:A,MATCH(B1,A1:A10,0)-C1)

T-KW
質問者

お礼

ありがとうございます。 やってみたら出来ました!

関連するQ&A

  • ■EXCELでこんな関数なんですが・・・教えて!!

    たとえばA列のセルに任意の数値が入力されています。B列のセルにある条件で日付が入力されます。そして別のセルにB列の日付が入力されるごとに隣接するA列の数値を合計していく関数なんですが。よろしくお願いします。

  • エクセルの関数

    A列に日付B列に金額が入っています。 C1とD1に日付を入力するセルをつくり C1の日からD1の日のB列金額の合計を出したい場合 どのような関数を使えば良いですか?SUMIFで出来ますか?

  • Excelの関数について

    [C1のセル値]-[A1またはB1のセル値] を使って計算したい場合の計算式を教えて下さい。 A列、B列、C列には具体的な数値を入力します。 D列にその結果を表示させる関数を入力したい。 と考えています。 但し、以下の条件を満たす事が必須となります。 (1)A、B、またはCのセルが未入力の場合はDは空白セルのまま。 (2)A、Bいずれかの一方が入力されている場合はCの値を使って計算し結果を表示。 (3)A、Bいずれも入力されている場合はBを優先してCの値を使って計算し結果を表示。 よろしくお願いします。

  • エクセルの検索

    お世話になります。 エクセルの検索でやり方が分からないので質問させて頂きます。 A列:商品名 B列:金額 を下に入力していきます。それに対して C1セルに検索する商品名を入力する事で D1~D20に検索した商品の金額を表示していきます。 ただしB列の下から順に検索し、D1~D20に上から順に表示したいです。 例: A列  B列 りんご 100円 みかん 150円 キウイ 160円 りんご 130円 キウイ 500円 りんご 300円 これに対しC1に「りんご」と入力する事で、 D1:300円 D2:130円 D3:100円 と表示したいです。 ネットで調べて D1=LOOKUP(2,1/(入力!$A:$A=$C$1),入力!B:B) と入れて下へコピペしたのですが、 全て同じ数値が表示されてしまいます。 分かる方がいましたら、回答お願いします。

  • エクセル(関数)について、教えて下さい

    写真のようにA列に日付が入力してあり、B列に数字を入力します。 B列に入力した数字の日付を、C列の表内に表示させ、D列にはB列に入力した数字を表示させたいと思います。 どのようにしたら良いのでしょうか。 よろしくお願いします。

  • VLOOKUP関数で検索結果が違うのは何故?

    初めて、質問させて頂きます。宜しくお願い致します。 現在、買掛帳及び売掛帳を作成しております。 VLOOKUP関数で検索結果を出したいのですが、うまく結果がでません。 教えて下さい。次の様な表を作成しました。 表の下には、入力規則の別表が13項目作成されています。  A B C D E … 1  日付 品名 数量 単位 単価 … 2 3 A2には日付を5/12(ユーザー定義で;;;にして、表示されていません) B2には下記表より入力規則された文字(前期繰越金・消費税etc)を選 択し、これも(ユーザー定義で;;;にして、表示されていません) C2は=IF(A2="","",A2)の関数が入力してあります D2には=IF(A2="","",LOOKUP(A2,$E$44:$E$56,$C$44:$C$56)) これも(ユーザー定義で;;;にして、表示されていません) E2には=IF(D2="","",VLOOKUP(D2,$C$44:$E$56,3)) としてあります 入力規則の表は横C列~E列 縦1~13項目 C列に数字(1~13)D列は空白 E列に前期繰越金・消費税などの文字列が入力されています。 D2に正常な数字が入る場合と、正常でない数字が入る場合とあるのですが、何故ですか。E2のセルもD2に反映される為、文字列が違ってきます。13番が該当するのに、8番が適用されるなど。 教えて下さい。

  • エクセル関数で教えてください。

    エクセルでB列には商品名(セルB1にみかんセルB2にみかんセルB3にみかんセルB4に柿セルB5に柿セルB6に柿、C列にはみかん柿の数量ランク(例:C1に1~、C2に10~、C3に100~と記入)、D列にはC列のランク毎の単価が表示されています。(D1に1000、D2に800、D3に500、D4に1500など) この表を、ほかのシートのA1にみかん、A2に柿と入力させて、B1に関数を入力してB1セル内で数量ランクの1~1000、10~800、100~500と横一列に表示させたいのですが可能でしょうか? どのような関数が適当でしょうか? このパソコンはエクセル使えず、添付できずわかりにくい説明で申し訳ないのですがどなたか教えてください。よろしくお願いいたします。

  • エクセル関数を教えてください

    日時が一致した列の指定したセルの値を 別セルに表示   A    B   C   D 1 7/1 7/2 7/3 7/4 2 256  264 273  286 3   8   7   13 4 5 6 7/3 7 ? A6(日付)と一致した列の3行目をA7に表示させる関数を教えてください。 勉強不足ですみませんがよろしくお願いします。

  • エクセル 検索

    Microsoft Excel 2007を使用しています。 条件を選んでマッチするデーターを表示する方法をお尋ねします。 A列、A1に「1」以下セルA10に「10」までの数字が昇順で入力されています。 セルB1からセルB10まで果物の名前が入力されています。名前の重複はありません。 セルC1に果物の名前を入力したらセルD1に関数を用いてそれに対応するA列の数値が表示されるようにできませんでしょうか。 エクセルのヘルプを見ましたが、旨く当てはまる関数を探し出せませんでした。 宜しくお願い致します。 例)  セルA5に「5」という数値があり、B5に「柿」が入力されている。 セルC1に「柿」と入力すると、セルD1に「5」が表示される。

  • エクセルの関数で文字列検索

    エクセルの関数ですが、指定したある特定のセルの中に「任意」または「フリー」という文字列が無かった場合のみ「TRUE」を返してほしいのです。 やってみましたがいまいち自信がもてないので質問しました。 =IF(AND(LEFT(OFFSET(D48,B49,0),2)<>"任意",LEFT(OFFSET(D48,B49,0),3)<>"フリー"),TRUE) と =AND(ISERROR(FIND("フリー",OFFSET(D48,B49,0))),ISERROR(FIND("任意",OFFSET(D48,B49,0)))) はまったく同じ結果となりますか? 異なる結果が返る場合はありませんか? また、両方とも同じ式の繰り返しを使っていますが、もっと簡単に記述できませんでしょうか?

専門家に質問してみよう