- ベストアンサー
エクセル2007で作成したい予定表データから別シートに作業予定日と機械名を入力すると該当データを表示する方法
- エクセル2007で作成した予定表データから特定の作業予定日と機械名を入力すると、該当する項目データを表示する方法について教えてください。
- 詳細なデータを含む予定表から特定の日時と機械名を抽出し、別のシートに表示する方法を教えてください。
- シート1で行われる多くの作業予定のデータから特定の日時と機械名の組み合わせを入力すると、該当するデータを表示する方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
シート1の1行目は項目名で2行目から下方にデータがあるとします。 A列からF列までにお示しの表がさらに右の列にいくつかの項目があるとしてJ列まであるとします。 データがどんどん追加されていくのですから複雑な式を入力して対応するよりも作業列を作って対応することがはるかに効率的です。 ところで結果の表示ですがシート2を使うとしてシート2のA1セルに予定日の文字を入力し、B1セルに検索したい予定日を入力することにします。また、A2セルには機械名と文字を入力しB2セルに検索したい機械名を入力します。 そこでシート1での作業列ですがK2セルには次の式を入力して下方にドラッグコピーします。 =IF(OR(Sheet2!B$1="",Sheet2!B$2=""),"",IF(AND(A2=Sheet2!B$1,B2=Sheet2!B$2),MAX(K$1:K1)+1,"")) シート2ではA3セルから右の列には項目名を入力します。 A4セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(OR(ROW(A1)>MAX(Sheet1!$K:$K),A$3=""),"",IF(INDEX(Sheet1!$A:$J,MATCH(ROW(A1),Sheet1!$K:$K,0),COLUMN(A1)+2)=0,"",INDEX(Sheet1!$A:$J,MATCH(ROW(A1),Sheet1!$K:$K,0),COLUMN(A1)+2)))
その他の回答 (4)
添付図参照 Sheet2 において、 1.セル A2 に次の配列数式を入力して、此れを下方にズズーッと、必要十分なだけ、ドラッグ&ペースト {=IF(OR(B$2="",C$2=""),"",SMALL(IF((Sheet1!$A1:$A1000=$B$2)*(Sheet1!$B1:$B1000=$C$2),(Sheet1!$A1:$A1000=$B$2)*(Sheet1!$B1:$B1000=$C$2)*ROW(Sheet1!A$1:A$1000),""),ROW(Sheet1!A1)))} 2.A列を“表示しない”に設定 3.セル D2 に次の[条件付き書式]を設定 数式が =ISERROR(D2) フォント色 白 4.セル D2 に式 =INDEX(Sheet1!C:C,$A2) を入力して、此れを右方にズズーッと(此処ではセル G2 までと仮定)ドラッグ&ペースト 5.セル E2 を日付形式 m/d に書式設定 6.範囲 D2:G2 を下方にズズーッと、必要十分なだけ、ドラッグ&ペースト
お礼
いろんなやり方があるんですね。たくさんの方のご指導に感謝です。 こいうのを作りたかったのです。 また、御教示頂けたら光栄です。お忙しい中ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 ↓の画像のようにSheet1に作業用の列を設けます。 (作業列が目障りであれば遠く離れた列にするか、作業列を非表示にします) Sheet1の作業列G2セルに =IF(AND(A2=Sheet2!$A$2,B2=Sheet2!$B$2),ROW(),"") という数式を入れオートフィルでずぃ~~~!っと下までこれ以上データがない!というくらいコピーしておきます。 Sheet2のA5セルに =IF(COUNT(Sheet1!$G:$G)<ROW(A1),"",INDEX(Sheet1!$A:$F,SMALL(Sheet1!$G:$G,ROW(A1)),MATCH(A$4,Sheet1!$1:$1,0))) という数式を入れ列方向・行方向にオートフィルでコピー! 最後に日付列の表示形式は「日付」にして完了です。 参考になりますかね?m(_ _)m
お礼
結果が同じでもいろんな数式がある事に驚きました。 皆さんの御力に感謝です。 また、教えてください。ありがとうございました
- MackyNo1
- ベストアンサー率53% (1521/2850)
ご希望の複数条件の抽出なら基本はフィルタオプションの設定を利用されることをお勧めします(マクロの記録でボタンをクリックすれば自動的に抽出結果を表示することができます)。 どうしても関数で表示したいなら、以下ような数式を入力して右方向及び下方向にオートフィルすることになりますが、配列数式のため元データの範囲や表示データ数が多くなると、再計算に時間がかかりシートの動きが重くなるなどの欠点があります。 (元データがSheet2にあり、A列の抽出条件がA1セル、B列の抽出条件がB列に入力されている場合)。 =IF(ROW(A1)>SUMPRODUCT((Sheet2!$A$2:$A$1000=$A$1)*(Sheet2!$B$2:$B$1000=$B$1)),"",INDEX(Sheet2!C:C,SMALL(INDEX(((Sheet2!$A$2:$A$1000<>$A$1)+(Sheet2!$B$2:$B$1000<>$B$1))*10000+ROW($A$2:$A$1000),),ROW(A1))))
お礼
まだ、試してませんが迅速にご教示いただきありがとうございました。 やってみます。
- mu2011
- ベストアンサー率38% (1910/4994)
フィルタオプションの設定でシート2に抽出しては如何でしょうか。 (1)シート2のA1:B2に抽出条件を入力 (2)シート2上でデータ→詳細設定→指定下範囲を選択、リスト範囲欄に=Sheet1!A:F、検索条件範囲欄にA1:B2,抽出範囲欄にA4→OK 因みに(2)操作をマクロ記録すると後々の操作が簡単になりますが如何でしょうか。 参考のURLを添付していますのでこちらもご確認下さい。
お礼
フィルタオプションだと、データを追記する度に抽出しなければいけないですよね。ではなくて、常に日付と機械を選択する方法が理想です。 でも大変勉強になりました。ありがとうございました。
お礼
すごいっす。これがやりたかったのです。ありがとうございました。 素晴しいです。また、困った時は是非御力を貸して下さい。 ありがとうございました。