• 締切済み

EXCEL データベース?抽出による一覧表作成(質問ワードが難しくネットで検索できず・・)

使用ソフトは、excel2003です。 簡単な計算式でできるのか、データベース的な知識が必要なのか よく分からず、その手法についてネットで検索しようとしても どう検索していいのかわからなかったので、ここに文章で 質問させて頂きます。 私のスキルは、自称「初心者レベルであれば上級者」くらいです(笑 【質問内容】 勤怠管理でエクセルで一覧表を作成しています。  No | 氏名 | 2/1 | 2/2 | 2/3 | 2/4 | ・・・・  1   田中   ○    ○    ×    ○  2   佐藤   ○    ×    ○    ○ 上記のような感じで作成しています。 (ずれて表記されていたらすいません) (1)これを別シートで、特定のセルに「No」若しくは「氏名」を入力するとその個人の勤務一覧表が完成するようにしたい。 (A4版の配布できるような勤務表に) 氏名【 田中 】←ここに入力する等 2/1 ○ 2/2 ○ 2/3  2/4 × ← 一覧表に IF構文で、1の場合は・・2の場合は・・と羅列するには 絶対量が多いため、無駄な努力となり もしかして簡単な構文や、手法があるのでは?と質問です。 なお、日によって勤務時間が異なり 同一日でも、業務内容によって3パターンの勤務時間があるので 上記、○や×のところに、◎や●を使って3パターンを作り 別に日にちごとにそれに対応した勤務時間の表を乗せ それらをうまく組み合わせることで、勤務日及び勤務時間まで 表記できれば、なおさらうれしい限りです。 あいまいな表現で、知りたいことがうまく伝わらなかったら すいませんが、分かる方いらっしゃいましたら、 どうか、宜しくお願い致します。

みんなの回答

  • CMLT
  • ベストアンサー率40% (143/357)
回答No.8

おそらく1枚の印刷シートに一個人の勤務表を作りたいのだと思います。 であれば、gyouda1114 氏の数式の引用列番号を氏名により可変にしてあげた方が良いと思われます。具体例として、 =INDEX(Sheet1!C:AD,MATCH(B$1,Sheet1!B:B),ROW(A1)) を記号を表示する初日の数式として入力、以下コピー。 (注:B1セルに氏名(可変)としています。場所が違う場合、B$1の部分を変更) 記号ではなく勤務時間とするなら、 ○ 勤務時間1 × 勤務時間2 ◎ 勤務時間3 ● 勤務時間4 のような表を作り、上の式の代わりに =vlookup(上の式,表の範囲,2) としてあげます。2日目以降へコピーする場合は表の範囲を絶対参照にするか行指定なしにして下さい。 例:AX$1:AY$4 や AX:AY など

すると、全ての回答が全文表示されます。
  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.7

回答番号:No.6です Shet2が抜けてました修正してください Sheet2 B1に =INDEX(Sheet1!$B:$AD,COLUMN(B1),ROW(B1)) B2セルから下行及びC1より右列にオートフィルでコピー 画像の上はSeet1です。

すると、全ての回答が全文表示されます。
  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.6

お望みのものであればいいのですが B1に =INDEX(Sheet1!$B:$AD,COLUMN(B1),ROW(B1)) B2セルから下行及びC1より右列にオートフィルでコピー

すると、全ての回答が全文表示されます。
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.5

sheet2 A2=IF(COUNTA(Sheet1!$1:$1)>ROW(),OFFSET(Sheet1!$A$1,0,ROW()),"") B2=IF(OR(B1="",A2=""),"",OFFSET(Sheet1!$A$1,MATCH($B$1,OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B:$B)),0)-1,ROW())) 32行目までフィル こんな感じかな?

すると、全ての回答が全文表示されます。
回答No.4

実現したい事はよくわかりました。 私もチャレンジしてみましたが簡単には出来ませんでした。 やはりデータベース的な知識が必要だと結論付けました。 VLOOKUP関数、DGET関数などを使うと データベースのテーブルのように データを扱う事は複雑な条件でなければ可能です。 しかし質問者様の「一覧表」は テーブルの項目名とデータが混ざってしまっているようです。 データベースのテーブルを設計する時は正規化という作業が必要です。 元ネタを以下のように作り変えれば「勤務表」を作る事は可能です。 <勤怠> NO 日付 勤怠 1 2/1 ◎ 1 2/2 × 1 2/3 ● 2 2/1 ○ 2 2/2 ○ 2 2/3 ○ <名前> NO 氏名 1 田中 2 佐藤 このように元ネタを作り変え、VLOOKUP関数などを 使えば出来ると思います。 一覧をコピーし、 「形式を選択して貼り付け→行列を入れ替える」 などが便利だと思います。 しかし質問者様は「一覧表」から作りたいのですよね。 お役に立てなくて残念です。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2の補足です! Sheet2のB2セルのオートフィル「+」のところでダブルクリックしてください。 これで2/28まで表示されると思います。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

一例ですが・・・ Sheet1のC2から○とかデータが入っているとします。 列方向にはC3から2/1・2/2・・・2/28と、その月の最後までの日付 Sheet2のA列にはA2から、2/1・2/2・・・2/28まで日付 B1セルには氏名ではなく、社員Noを入力した場合にB2セル~B29セルに ○・◎・●等を表示させる方法として回答します。 B2=IF($B$1="","",INDEX(Sheet1!$C$2:$AD$12,$B$1,DAY(A2))) ($AD$12の12部分は社員数によって変わります。当方で勝手に11名として試したものをコピペしました) この場合はSheet1のデータの中に○・◎・●等表示されているそのままがSheet2に反映されると思います・・・ もし見当違いの回答なら軽く読み流してください。m(__)m

すると、全ての回答が全文表示されます。
  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.1

下記の検索例あたりがお求めのものに近いような気がします。 「Excel 検索 抽出 関数」の検索結果 http://www.google.co.jp/search?hl=ja&q=Excel%E3%80%80%E6%A4%9C%E7%B4%A2%E3%80%80%E6%8A%BD%E5%87%BA%E3%80%80%E9%96%A2%E6%95%B0&lr=

zwr02052
質問者

お礼

DGET関数というものですね。 関数については、基本的なものしか知識がないため、 ちょっと読み込んで勉強してみます。 曖昧な質問に回答して頂きありがとうございます!

すると、全ての回答が全文表示されます。