• ベストアンサー

【Excel2010】列と行の交わるセルの値

Excel2010に関しての質問になります。 シフト表を作成しているのですが、上段にある表を別シートで下段の様な表の形で7行目や9行目にシフト時間を表示させたいと考えています。(理由は個人に配布するため) 単純にシフト時間を表示することなら出来ましたが、翌月以降は日付と曜日が当然の様に異なるので毎回数式を組み直す必要が出てしまうので、日付と名前から検索してシフト時間を引っ張ってきたいのですが、どのような数式にすれば可能でしょうか?

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>日付と名前から検索してシフト時間を引っ張ってきたいのですが、どのような数式にすれば可能でしょうか? VLOOKUP関数とMATCH関数で氏名の行と日付の列の交点の値を抽出できます。 エラーの対策にはIFERROR関数が使えますので効果的な使い方で対応します。 尚、氏名と日付の交点が未入力の場合は数値の0が戻りますので、&演算子で""(空欄)を連結すると良いでしょう。 Sheet2!A7=IFERROR(VLOOKUP($D$1,Sheet1!$F$4:$AO$9,MATCH(A6,Sheet1!$F$2:$AO$2),FALSE)&"","") 貼付画像はExcel 2013で検証した結果ですが、Excel 2010でも再現できるはずです。 Sheet2(カレンダー)の作り方については質問の対象外と解釈しました。

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

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 両シートとも何というシート名なのか説明がありませんので、取り敢えず仮の話として上段の表があるシートがSheet1、下段の表があるシートがSheet2であるものとします。  それと、 >翌月以降は日付と曜日が当然の様に異なるので毎回数式を組み直す必要が出てしまうので、日付と名前から検索してシフト時間を引っ張ってきたいのですが との事ですが、同じ日付の日であっても年によって曜日は変わって来ますので、「11月シフト表」というだけでは、何年の11月であるのかが判らないため、その月の何日が何曜日であるのかが定まりません。  ですから、Sheet1の適当なセルに年月を指定するための日付データを入力する様にして下さい。  具体的にはまず、Sheet1のK1セルの書式設定を[ユーザー定義]の yyyy"年"m"月" か又は gge"年"m"月" としておいた上で、Sheet1のK1セルの右隣のセルに「シフト表」と入力して下さい。  そして、Sheet1のK1セルに年月を入力する際には、例えば 2015/11 や 2015年11月 といった形式で年月のデータを入力して下さい。  次に、Sheet1のK2セルに次の関数を入力して下さい。 =IF(ISERROR(1/DAY($K$1)),"",IFERROR((TEXT($K$1,"yyyy/m/")&COLUMNS($K:K))+0,""))  次に、Sheet1のK2セルの書式設定を[ユーザー定義]の d"日" に設定して下さい。  次に、Sheet1のK3セルに次の関数を入力して下さい。 =IF(K$2="","",TEXT(K$2,"aaa"))  次に、Sheet1のK3セルの書式設定を[ユーザー定義]の aaa に設定して下さい。  次に、Sheet1のK2~K3のセル範囲をコピーして、Sheet1のL2~AQ3のセル範囲に貼り付けて下さい。  次に、Sheet2のA1セルに次の関数を入力して下さい。 =IF(ISERROR(1/DAY(Sheet1!$K$1)),"(年月未入力)",TEXT(Sheet1!$K$1,"yyyy年m月シフト表"))  次に、Sheet2のA1セルの書式設定を[ユーザー定義]の yyyy"年"m"月シフト表" か又は gge"年"m"月シフト表" に設定して下さい。  次に、Sheet2のB3セルに次の関数を入力して下さい。 =IFERROR(COUNTIF(INDEX(Sheet1!$K:$AO,MATCH($D$1,Sheet1!$F:$F,0),),"*?-*?"),"")  次に、Sheet2のB3セルの書式設定を[ユーザー定義]の d"日" に設定して下さい。  次に、Sheet2のA6セルに次の関数を入力して下さい。 =IF(ISERROR(1/DAY(Sheet1!$K$1)),"",IFERROR((TEXT(Sheet1!$K$1,"yyyy/m/")&(ROW()-ROW($A$6))/2*7+COLUMNS($A$6:A6)-WEEKDAY(Sheet1!$K$1)+1)+0,""))  次に、Sheet2のA6セルの書式設定を[ユーザー定義]の d"日" に設定して下さい。  次に、Sheet2のA7セルに次の関数を入力して下さい。 =IF(OR(A6="",$D$1=""),"",IF(COUNTIF(Sheet1!$F:$F,$D$1),INDEX(Sheet1!$K:$AO,MATCH($D$1,Sheet1!$F:$F,0),MATCH(A6,Sheet1!$K$2:$AO$2,0))&"",""))  次に、Sheet2のA6~A7のセル範囲をコピーして、Sheet2のA6~G17のセル範囲に貼り付けて下さい。  尚、Sheet2のE3セルの勤務時間数を表示させるための関数に関しては、1回目の休憩時間が何時から何時までで、2回目の休憩時間が何時から何時までで、3日回目の・・・と言う具合に、各々の休憩時間が何時から何時までなのかという事に関して質問者様から何の御説明も無いため、情報不足で関数を組む事が出来ません。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>日付と名前から検索してシフト時間を引っ張ってきたい 名前はさておき、「日付」が各セルに具体的にどんな内容で記入してあるのか「正確に」情報提供しないと、関数だけ聞いてもしょーがありませんよ。 例えば) 上の表の「1日」は「文字通り半角数字の1と日の2文字で記入してある」とする 下の表の「1」は、関数を使って日付のないセルは空白("")が、日付のあるセルは半角数字の1,2,3が計算してあるとする 上の表のシート名はSheet1であるとする 下の表のA7: =IF(A6="","",VLOOKUP($D$1,Sheet1!$F:$AO,MATCH(A6&"日",Sheet1!$F$2:$AO$2,0),FALSE)) 右にコピー 下にコピー あぁ、それとも下の表の1,2,3…も、手で入れてるんですかね。 例えば下記などを参考に。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/calendar.htm

pocopizz
質問者

補足

色々と情報不足で申し訳ありません。 シート名は上段がSheet1、下段はSheet2とします。 Sheet1の日付は=DATE(2015,$K$1,1)で「d"日"」になっています。日付欄の上の黄色部に11(表記は11"月")が入っています。曜日は日付から引っ張ってきてaaaで表記しています。 Sheet2は日付・曜日ともに手入力になっています。 ※Sheet1は以前に別の人が作成したため、この様な仕様になっているのか理由は分かりません。

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

関連するQ&A

  • 【Excel2010】列と行の交わるセルの値

    前回の質問のベストアンサーに選ばせていただいた方法で、 シフト表を制作したところ、上段(シフト表)の31日にデータを入力すると、 下段のカレンダー側で翌月1日以降のデータも勝手に引っ張ってきてしまいます。 翌月以降なので表示させたくないのですが、どのようにすればよろしいでしょうか? ※カレンダー側の日付はA6に"シフト表!K2-WEEKDAY(シフト表!K2)+1"で以降はA6+1,A7+1、 シフト時間の表示は=IFERROR(VLOOKUP($D$1,シフト表!$F$4:$AO$9,MATCH(A6,シフト表!$F$2:$AO$2),FALSE)&"","")となっています

  • 行に印のある列を残し他は列削除

    上段の表の1行目の"●"印の列のみ表示し1行目空白は列削除し下段の表にしたいのですがどなたかVBAコードが解る方宜しくお願いします。

  • エクセルの使い方 セルを直したい

    説明が下手でわかりにくいと思いますがよろしくお願いします。 エクセルでスケジュール表を作っています。 ページ上段は日付がついた予定表 ページ下段は今月の重要項目 というような感じで作成したいと考えています。 ページ上段のセルには、日付・曜日・予定・出来事があります。予定と出来事は日付や曜日に比べセルの幅を広く設定。 と、ここまでは良いのですが、下段ではセルの幅が継続されており、うまくレイアウトできなく困っています。 下段のスペースのセルの幅を変更することはできるのでしょうか?

  • Excel2003 検索して値の参照

    お世話になります。 掲題の件で ご相談が御座います。 添付のような表がありまして、シートが2枚に分かれております。 数式を入れたいシート(表示用シート)に参照元シート(入力用シート)を図で貼り付けました。 ピンクの表が入力用シートになります。 入力用の「C列"エリア"」を「D列"更新日"」を参照して 日付が横並びになっている 表示用シートに各項目を反映させたいのですが、どのような数式を入れたら良いのか、 また そもそも表の作りに無理があるのか?と ちょっと煮詰まってしまっている状態です。 入力用シートは更新日と備考以外はプルダウンで選択するようにしています。 反映させたい表示用シートには「A列」に「エリア」が北海道~沖縄まであります。 日付は10月~3月まで用意されており 3行目、15行目、27行目、39行目、52行目に「月」が入っており、 4行目、16行目、28行目、40行目、53行目に「日」が入っております。 さすがに 2行にまたがった日付を参照するのは無理があるだろうと思い 1行目にフォントの色「白」で「2009/9/25」等 該当する列に日付を入れました。 しかし、その後に 入力用シートのC列D列を参照して どうやって 表示用シートに反映させたら良いかで困っております。 作業列を作るにしても どうやったら良いものやら、、 そもそも 全部横並びになっている所に無理があるのでしょうか? どなたか お分かりになる方がいらっしゃいましたら宜しくお願い致します。 説明不足等 御座いましたら何なりとお申し付けください。 宜しくお願い致します。

  • エクセル VLOOP関数

    エクセル初心者です。 エクセル2003を練習中なのですが 今、下画像の上段のようなデータのシートを作成しました。 シートは左の日付を3行セル結合しています。 このシートのデータを、画像下段の表のように 関数で表引きしたいのです。 下段の表は、左の日付を2行セル結合しています。 関数(VLOOPUP関数とINDEX関数)の使い方が、今一つ分かりませんでした。 どんな数式を入力していけばいいのでしょうか。 お願いします。

  • excelで2行を1行に

    excelで2行の罫線枠中に上段:空白、下段:文字列とか、上段:文字列、下段:文字列のように様々な罫線枠内を1行に結合したいのですが、 ○○┌────┬────┬─────┬── 1行 │(空白)│文字列 │(空白) │ 2行 │ 文字列 │文字列 │ 数式 │ ○○└────┴────┴─────┴── この形式が数段、数シートに渡ってあります。 ○○┌────┬────┬─────┬── 1行 │(空白)│文字列 │(空白) │ ○○│ 文字列 │文字列 │ 数式 │ ○○└────┴────┴─────┴── 上記のように1行に上下に結合したいのですが、こんなことできるのでしょうか。 何卒、ご教授下さい。

  • 【Excel】行と列で値を検索したい

    こんにちは Sheet1に表があります。 Sheet2のA列と1行に値を入力したときに、 Sheet1の交わる値を表示したいのですが、 Sheet2のB2、C2、B3、C3の式を教えて下さい。 Excel2013です。 宜しくお願いいたします。

  • excel2000 行の挿入が出来ない

    excel2000の表で、ふつうにただ1行挿入したいだけなのですが、「行の挿入」を選ぶと 「データの消失を防ぐ為、空白でないセルをワークシートの外にシフトすることは出来ません」 とポップアップが出て、操作できません。 どうすればできるでしょうか?

  • Excel2007で、sheet1,2等を示す行が消えました。

    Excel2007で、表の最終行のさらに1行下にあった、sheet1,2等の表示が消えました。 新しく立ち上げると、ちゃんと出ます。 sheet1,2等を表示させる方法を教えて下さい。

  • EXCEL2003でロックされたセルを含む行の削除、追加を許可したい

    EXCEL2003で、以下の表を作りました。 ・200行50列。50列うち40列は数式。リストになっている。 ・数式でない10列のみ、ロックをはずし、シートの保護をかけた。 この表で、保護したまま、以下の操作を許可したいのですが、可能でしょうか? ・ロックされたセルを含む、行の削除 ・行の追加時に、ロックされた列に数式の自動コピー  (リストになっているので、保護解除状態ではコピーされます) 数式をいじられたくないだけなので、行の追加削除は自由にさせたいのです。 EXCELのバージョンアップをしたら可能になったりしますでしょうか? ご回答、よろしくお願い致します。

専門家に質問してみよう