[[20100415160344]] 『時間の計算』(のびた) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『時間の計算』(のびた)

 下記のようなリストがあります。

 A     B   C   D     E         F
 支店 年数 氏名 開始時間 終了時間 終了時間A 
 札幌 6  鈴木   10:00     11:00     11:00
 大阪 1  伊藤   12:00               13:00
 東京 10  佐藤   11:00               13:00

 終了時間(E列)に時間が入っていないときには終了時間(F列)に関数を使用して
 表示させたいです。
 ただし10年以上の時間は支店によって違います。

 下記のような関数を作りたいと思っています。

 終了時間が空白の時(E列)、支店が札幌で10年以下であれば(F列)開始時間に1時間を
 足した時間を表示させ10年以上であれば2時間を足した時間を表示させる
 終了時間が入力されている場合はそのまま終了時間Aに表示させる

 こういった関数を下記の●の部分に入れ込みたいのですがどんな関数を設定したら
 =IF(E2="",●),E2)
 いいのでしょうか?


 。。。これじゃないの?
[[20100414151426]] 『時間の計算の関数を教えてください。』(ちょび助)

 これもほったらかしだし。
[[20100405112110]] 『時間の表示』(のびた)

 (HANA)

 のびたさんへ。
 勝手に人の発言を消さないように。
 (殊勝にすみませんと書いたかと思ったら)
 まあ、これ以上あなたにかかわる気はありませんが。

 修正前

 『時間の計算』(のびた)

最近同じ様なタイトルで質問をさせて頂いていますが何とかまとまって来ましたので 最後?の質問をさせて頂きます。 下記のようなリストがあります。 A B C D E F 支店 年数 氏名 開始時間 終了時間 終了時間A 札幌 6 鈴木 10:00 11:00 11:00 大阪 1 伊藤 12:00 13:00 東京 10 佐藤 11:00 13:00 終了時間(E列)に時間が入っていないときには終了時間(F列)に関数を使用して 表示させたいです。 ただし10年以上の時間は支店によって違います。 下記のような関数を作りたいと思っています。 終了時間が空白の時(E列)、支店が札幌で10年以下であれば(F列)開始時間に1時間を 足した時間を表示させ10年以上であれば2時間を足した時間を表示させる 終了時間が入力されている場合はそのまま終了時間Aに表示させる こういった関数を下記の●の部分に入れ込みたいのですがどんな関数を設定したら =IF(E2="",●),E2) いいのでしょうか?

 ―――
 こちらは放置でしょうか? 
[[20100405112110]] 『時間の表示』(のびた)
 (独覚)
 ―――
 独覚さん すみません。m(__)m 16:58 のびた ... 

 (独覚)

 はっっ、そうだったんですか。
 経緯に気付かず、失礼しました。

 (HANA)

 HANAさんも被害者みたいなものですし、恐縮することは無いと思います。

 のびた氏へ、Q&Aサロンはマルチポストを禁止しています。
http://excelfactory.net/excelboard/exgeneral/excel.cgi?mode=all&namber=104848&rev=0

 追記
 >まあ、これ以上あなたにかかわる気はありませんが。
 と書きましたが注意や忠告は別です。
 (独覚)

 えっと、のびたさん=ちょび助さんと思って話を進めて良いですか?
 違う方でしたら、ちょび助さんの方の過去ログをご覧になってから
 以下を読み進めてもらえればと思います。
   >ただし10年以上の時間は支店によって違います。
  と有るので、同じ様な表を作ることに成ると思いますので。

 まず、あの様な表を作った場合
 MATCH関数とINDEX関数を組み合わせて目的のセルの値を参照できます。

 問題は組合せ方だったと思います。
 そのためには、式の成り立ちの仕組みを理解する必要が有ると思います。

 ログでは、MATCH関数の方から話を始めましたが 成り立ちを考えると
 INDEX関数の方から話が始まります。

 INDEX関数は INDEX(配列,行番号,列番号) の様に指定する関数です。
 例えば、↓の様な表が有った場合
		<1>	<2>	<3>
	[1]	○	◆	▼
	[2]	■	◎	◇
	[3]	△	☆	●
 1行目の2列目の値は「◆」 2行目の2列目の値は「◎」 ですね。

 この表がB2セルから始まっていた場合
	[A]	[B]	[C]	[D]
[1]				
[2]		○	◆	▼
[3]		■	◎	◇
[4]		△	☆	●
 =INDEX(B2:D4,1,2) の式は「◆」を返します。
 B2:D4の範囲の 1行目の2列目の値なので。

 逆に「◎」を得たいと思ったら 行番号に2、列番号に2を指定すれば良いですね。
 =INDEX(B2:D4,2,2) と言った式になります。

 もう少し、実際の表の状態に近づけてみます。
	[A]	[B]	[C]	[D]
[1]		1年	2年	3年
[2]	A支店	○	◆	▼
[3]	B支店	■	◎	◇
[4]	C支店	△	☆	●

 A支店で2年だった時に得たい値は「◆」です。
 パット見て「◆」と分かったかもしれませんが
 何故分かったか一つずつ立ち止まりながら考えてみて下さい。

 おそらく、A2:A4の範囲を見て A支店 と言う文字を探し・・・・・あ、1番最初のセルだ
 それから、B1:D1の範囲をみて 2年   と言う文字を探し・・・・・あ、2番目のセルだ
 二つを確認した後、B1セルからみて、1番最初の行と、2番目の列が交差する「◆」
 と特定していると思います。

 この「あ、○番目のセルだ」と調べるのが MATCH関数です。

 MATCH関数は MATCH(検査値,検査範囲,照合の型) の様に指定する関数です。
 MATCH("A支店",A2:A4,0) と言う式で 1
 MATCH("2年",B1:D1,0)   と言う式で  2 が得られます。

 後はINDEX関数と組み合わせます。

 なので、全体としては INDEX(B2:D4,MATCH(   ),MATCH(   ))と言う式になります。

 どこまで分かってどこから分からないのか
 こちらから分かるように表現して頂けると良いのですが。

 (HANA)

 HANAさんへ
 上記の解説くわしくご説明ありがとうございました。

 再度チャレンジしてみます。

 独覚さんへ
 勝手にコメントを消してすみませんでした。

 なかなかコメントをいただけなかったので・・・

 マルチコメントの件以後気をつけます。

 18:19 のびた

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.