- ベストアンサー
1日~7日の指定日にちのデータを取得する方法
- 指定した日にちのデータを抽出する方法を教えてください。
- 1つのシートに明細書・勤怠が同じ並びであり、週払いの明細を取得したいです。
- 同じブックにスタッフ一覧があり、週払いスタッフを判別するためのチェックボックスがあります。これを利用して何か別の操作を行いたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
実は文章が複雑すぎてご質問の意味がよく理解できません。しかし、指定した日付のデータを表示させるための簡単な方法は作業列を使って対応することでしょう。 例えばA2セルから下方に5/1からの日付があるとします。1行目は項目名などがあり、すべてのデータは2行目から下方に有るとします。そこで取り出したい日にちに範囲を例えばE2セルとF2セルに入力するとします。例えばE2セルには5/7、F2セルには5/14のように入力します。 そこで取り出したい行を選ぶわけですが作業列としてG列を使用することとしてG2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(AND(A2>=E$2,A2<=F$2),MAX(G$1:G1)+1,"")) これで該当する行には上から1,2,3のように番号が振られます。この番号を利用して日付の行を取り出すことができます。 例えばシート2のA列に取り出した日付を表示させ、B列やC列にシート1の表でのB列やC列を表示させるとしたら、A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$G:$G,ROW(A1))=0,"",IF(INDEX(Sheet1!$A:$F,MATCH(ROW(A1),Sheet1!$G:$G,0),COLUMN(A1))="","",INDEX(Sheet1!$A:$F,MATCH(ROW(A1),Sheet1!$G:$G,0),COLUMN(A1)))) なお、シート2のA列で日付の表示されるセルの表示形式は日付から指定します。 これまで述べてきたようなことが表を作成する上での基本となることでしょう。一度提案した通りの方法で試験してみてください。その上で、ご自分のデータについてそれを応用するようにされてはいかがでしょう。
その他の回答 (2)
- MackyNo1
- ベストアンサー率53% (1521/2850)
ご質問内容だけを見ていると、単純に特定範囲の日付のデータを関数で抽出したいというように見えますが、それでよいのでしょうか? もしそのような条件なら日付をキーとするVLOOKUP関数を使えば良いと思います。 ちなみにキーとなる日付を抽出するには、たとえば開始日がW15セルに入力されているなら単純に以下の式を入力し、下方向にオートフィル(1週間分なら7つ)するだけで良いと思います。 =$W$15+ROW(A1)-1 ちなみにO列に同じ日付が入力されているなら、以下のような配列数式で特定の日付範囲のデータを抽出することができます(終了日がX15セルに入力されている場合)。 =IF($X$15-$W$15+1<ROW(A1),"",INDEX(O:O,SMALL(IF(($O$16:$O$50>=$W$15)*($O$16:$O$50<=$X$15),ROW($O$16:$O$50),""),ROW(A1)))) 入力後、Ctrl+Shift+Enterで確定して下方向および右方向にオートフィルします。 表示形式を調整する必要がある場合や、空白セルが0と表示されないようにするには、セルの表示形式を適宜設定してください。
お礼
お礼が遅くなりました。 あまりにも 私の質問の仕方が悪いので、今、別の質問に変えて 出したところです。 質問が、ダブってまた御叱りを受けそうですが・・・ やりたい事は、 このような事です。 1シートに1名分の勤怠明細表があります。 ・・A・・・・・ B・・・・・・・C・・・・・・・D・・・・・・・E・・・・・・・・F・・・・・・・・G・・・・・・・H・・・・・・・・・K ・日月・・・出勤・・・・退勤・・・・休憩・・・・実働時間・・・・時給・・・・・時間内・・・・時間外・・・・基本賃金 15 16 5月1日・9:00・・・・12:00・・・・1:00・・・・・2:00・・・・・・850・・・・・・1700・・・・・・・・・・・・・・¥1700円 17 5月2日 18 5月3日 19 5月4日 Fの12に、 支払金額が表示されます。 上記のような表が横並で、3枚(仮にA表・B表・C表) 3枚とも同じ書式で、A表・B表とも 時間の入力は、(B 列C 列D 列)別のシートからリンクされてます。 やりたい事は 3枚目C 表が、週払い用になってまして、 現在B表の時間を 張り付けしてましたが、 たとえば ・・・・・・・ AE・・・・・・AF・・・・・AH・・・・・・ AJ 4 ・1回目・・・・・ 5/1 ・・・・・5/5 ・・・・・ ¥3200 5 ・2回目・・・・・5/6 ・・・・・5/12 ・・・・・¥62000 6 ・3回目 7 ・4回目 AF4に検索開始日 5/1 AH4に検索終了を入れると、 指定した日数の支払金額を、AJ4に出す事が出来るでしょうか、 週払いは、同じ月の日曜日~月曜で 月に 3回か4回です。 張り付けで作業してますと、その月の前のデーターが、残らないので、 当月の週払い金額 約 3回分が 残る形で考えているのですが
- imogasi
- ベストアンサー率27% (4737/17069)
良くある帳票とはいえ、質問者の会社の帳票名だけ、質問に書いて、長々書いているが、読者には判るわけが無い。イメージで回答するのでなく関数式などまで聞きたいのだろうから。 画像を貼り付けたのは良いが、ぼやけて読み取りにくい。 例データを整理して、質問内にタイプして載せてほしい。 もっと整理して問題点を説明できないのか。 ーー この程度の仕事がらみの処理は、関数では複雑になりすぎると思う。VBAが必要だと思う。VBAは経験ありますか。なければ従来どおり手作業でやるしかない。 結局、条件に合った行の抜きだし問題だと思うが、関数では苦手で、#1のように式が複雑になり、初心者には何をやって居るか理解できないのでは。 関数による抜き出し問題は、Googleで「imogasi方式」で照会すれば、各種の方法の回答例が出てくる。 Imogasi方式は作業列を使うがために、すこし理解しやすいと思うが。 ーーー 従業員各人の1か月分のエクセルデータは、1シートになっているのか。 日付はある列に上から下の行に固まって並んでいるのか。 その中から在る週の7日分を抜き出した表を作りたいのか。週はどういう決め方か(月耀ー日耀か) そういう大事なことを説明し、1人分のデータ例と、週払いの資料のデータ部分の配置を示すべきだ。 >A明細は、社員送付用・B明細は会社控え用 C 明細は、週払いスタッフ用 こんなのもVBAでやったり、システムプロがやるときは、元データは1シートで、あと派生して作れるものはVBAで整えて作る。
お礼
厳しいご意見ですが、 おっしゃる通りだと 思います。 提示した表も見ずらいし・・・ 細かな 説明不足ですね。 整理してから 検討しなおして 必要であれば また質問します。 ありがとうございました。
お礼
回答ありがとうございます。 返事が遅くなりました、 質問が、下手なので 分かりづらくすみませんでした。 さきほど やっと回答に意味がつかめてきました (頭が悪い物で・・・すみません) 明日会社のシートで 試してみます。 ありがとうございました。