[[20100425130911]] 『関数について』(ニッキー) ページの最後に飛ぶ

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

 

『関数について』(ニッキー)
 質問の仕方がうまくないので、大変申し訳ありません。
指定した範囲の中から、決まった文字列を検索して表示する関数はありますか?
INDIRECTは試してみたのですが、うまくいきません。。。。
Excel2004です。

 具体的にどのような結果を求めているのかよくわかりませんが
 「決まった文字列」をカウントしたいということなら
 COUNTIF関数を試してみてください。

 (えくせる青年)2010/4/25 13:19

 説明不足で申し訳ありません。
例えば、A2のセルには 田中 B2のセルには 佐藤 C2のセルには 伊藤 とあると、A2:C2の中からA1のセルに田中だけを探して 田中と表示させたいのですが・・・。

 よくわかりませんがどういう基準で「田中」なのでしょうか?
 回答者にわかるように
 なさりたいことを具体的に説明したほうがいいと思います。

 (えくせる青年)2010/4/25 13:33


 度々で申し訳ありません。うまく説明できなくて・・・
日々の作業日報には、いつA1のセル、どこの現場にB1のセル、
誰が入ったC1のセル、という内容が入っているのですが、
個人別日報のシートにデータが入るようにしたいのです。つまり、
日報を入力すると、同時に個人別シートに日付や業者名が入るようには出来ないのでしょうか?
そんな都合のいい関数はないのでしょうか?
または、関数を組み合わせたりすると、可能なのでしょうか?
ぶしつけで申し訳ありませんが、宜しくお願いします。


 あれ?↓と違うんですか?
[[20100424211804]] 『関数を教えてください。』(ニッキー)

 こんな感じの事かな〜? と思ってましたが。。。

 作業日報のシート
	[A]	[B]	[C]	[D]
[1]	日付	派遣先	派遣者	
[2]	4月1日	A社	田中	伊藤
[3]	4月1日	B社	鈴木	
[4]	4月3日	A社	佐藤	田中
[5]	4月3日	B社	山田	
[6]	4月5日	C社	河合	

 田中のシート				
	[A]	[B]
[1]	日付	派遣先
[2]	4月1日	A社
[3]	4月3日	A社
[4]		

 田中のシートのレイアウトが一寸良く分からないですが。。。
 作業日報のシートの方も、日付で重複が有るのか無いのか とか
 良く分かりません。

 (HANA)

 HANAさん 回答ありがとうございます。 全くその通りです。
私のイメージした通りの表です!!それで、日報を入力すると、
同時に田中のシートに反映するようにできるのでしょうか?
(レイアウトもバッチリです!)

 追記:田中で日付が重複することはありません。

 このケータイは田中さん専用、こっちのは伊藤さん専用、自宅の固定電話は鈴木さん専用・・・
という電話の使い方をする人は、(後ろめたい理由がない限り)いないと思われます。
一台のケータイで電話番号のリストから選んで通話しますよね。
選ぶことで色々な人と話せますから、何台も使うよりは便利です。
 
Excelも同じ考え方で、ひとつのシートで名前のリストから選んだ方が便利だと思いませんか?
(そういう使い方が便利と思うならアドバイスします)
(みやほりん)(-_∂)b

 (みやほりん)さん アドバイス有難うございます。
個人のシートでは、日々の日報から反映されたデータから、給与計算等がされるような表になっています。それでも、一つのシートで出来ますか?
ちょっとイメージが出来ないのですが・・・。すみません(/_;)

 HANAさんが、作成した表のようにしたいのですが、回答はいただけないのでしょうか・・・(;_;)
 少し焦っています。宜しくお願いします。

 度々ですみません。
 VLOOKUP関数を使って、試してみました。
 何とかなりそうですが、範囲と列番号のところが、別のシートのデータを参照するようになるのですが・・・。
 列番号を普通は 2 と入れるところに 日報!2 と入れるとうまく行きません・・・。
 特別な入力方法があるのでしょうか?

 >それでも、一つのシートで出来ますか?
 これは
 >データから、給与計算等がされるような表になっています。
 この部分の仕組みによると思いますが。

 この部分の仕組みが全ての人で同じ(データだけが違う)
 ので有れば、一つのシートで良いのではないかと思いますが
  (データだけをその都度入れ替えて使用する)
 最終的に、例えば
  それぞれのシートの特定のセルのデータを集約した一枚のシートも作る
 のなら人数分のシートが必要かもしれません。

 人数は何人居るのでしょう?

 (HANA)

HANAさん 有難うございます。
人数は15人ほどいますが、入れ替わりが結構あるので、定数は約10人ほどです。現在は人数分のシートがあります。シートのフォーマットはすべて同じです。
日報のシートは日々更新されるようになっています。つまり、昨日入れたデータは、次の日には同じセルに新しいデータが入ると言うことです。
これを、更新しないで、日々の日報データを保存して、1か月分のシートを作ることも可能です。データの反映に必要なフォーマット変更は可能です。
とにかく、日々の日報のシートから自動的に個人のシートに反映されればデータが飛べば良いようです。
よろしくお願いします。

 この掲示板は、自動で名前が入りませんので、コメント記入の際は
 その都度ご署名をお願いします。

 以下、一つのシートでデータのみを切り換えて表示する方法です。
 いきなり実際のデータで試すと上手く行かない場合が有りますので
 まずは、新しいブックに↓と同じデータを作成し書いてあるように数式を入力し
 結果を確認して下さい。

 1.作業日報 と言う名前のシートに
	[A]	[B]	[C]	[D]	[E]
[1]	日付	派遣先	派遣者		作業列
[2]	4月1日	A社	田中	伊藤	2
[3]	4月1日	B社	鈴木		
[4]	4月3日	A社	佐藤	田中	4
[5]	4月3日	B社	山田		
[6]	4月5日	C社	河合	鈴木	
[7]					
 A:D列とE1セルはデータを入力
 E2セルに
=IF(COUNTIF(C2:D2,給与計算!$B$1),ROW(),"")
 の式をいれて、E6セル以上フィルドラッグ。

  2.給与計算 と言う名前のシートに
	[A]	[B]
[1]	派遣者	田中
[2]	日付	派遣先
[3]	4月1日	A社
[4]	4月3日	A社
[5]		
 A1:B2はデータを入力
 A3セルに
=IF(COUNT(作業日報!E:E)<ROW(A1),"",INDEX(作業日報!A:A,SMALL(作業日報!E:E,ROW(A1))))
 B3セルに
=IF(A3="","",INDEX(作業日報!B:B,SMALL(作業日報!E:E,ROW(A1))))
 の式を入れて必要行フィルドラッグ。

 この例では、給与計算シートのB1セルに「田中」と入っているので
 田中のデータが表示されています。
 B1セルの名前を変更して確認してみて下さい。

 (HANA)

HANAさん 回答有難うございます。早速試してみました。問題は解決しました。
日報のシートは増えますが、給与計算のシートで全員のデータを反映出来そうです。
日報のデータは日々更新されるので、毎日印刷して残していたようです。すべてのデータの元なので、データを残すようにした方がいいですね!
1か月ごとにフォルダーを作成し、残すようにします。
とりあえず、新しいフォーマットを作成します。 有難うございました。 (ニッキー)

HANAさん 新しいフォーマットを作成していますが、

=IF(COUNT(作業日報!E:E)<ROW(A1),"",INDEX(作業日報!A:A,SMALL(作業日報!E:E,ROW(A1))))

の関数の意味を教えていただけますか?
多少、行や列が変更があり、うまく結果が出ません。
作業日報!E:Eとは作業日報のシートの関数の入っている列と言う意味ですね。
ROW(A1)とは給与計算シートのA1のセルと言う意味ですね。
それなりに変更して関数を入力したのですが、空白で出てきます。。。 (ニッキー)


 そうなんですよね。
 さじ加減で変わってしまうような式なので
 仕組みが分からないと少し難しいかもしれません。

 新しいレイアウトはそれぞれどの様に成っているでしょう?

 上の例で行くと、作業日報シートのE列は値だけを小さい順に抜き出すと
 一番目に小さい値・・・2
 二番目に小さい値・・・4
 と成っていますね?

 給与計算シートの式の INDEX(作業日報!A:A,SMALL(作業日報!E:E,ROW(A1))) の部分ですが
 C3セルに =ROW(A1) と入れてフィルドラッグして下さい。
  1,2,3,・・・と連番が表示されると思います。

 D3セルに =SMALL(作業日報!E:E,C3) を入れてフィルドラッグして下さい。
   2,4,#NUM!,・・・と表示されます。

   これは、作業日報シートのE列の中の値を小さい順に取り出して居ます。
   SMALL関数を使って、一番目に小さい値・・・2、二番目に小さい値・・・4。

 E3セルに =INDEX(作業日報!A:A,D3) を入れてフィルドラッグして下さい。
   4月1日,4月3日,#NUM!,・・・と表示されます。

 F2セルに =COUNT(作業日報!E:E) を入れて下さい。
  作業日報シートのE列の数値の個数 = 田中 の個数
  =表示が必要なデータ個数  が分かります。

 F3セルに =$F$2<C3 を入れて、フィルドラッグして下さい。
   TRUE,TRUE,FALSE,・・・と表示されます。

 A3セルには、F3セルがTRUEに成っている行にだけ、E列の値が表示されることに成ります。

 上手く行かない場合には色々な事が考えられますが
 例えば、作業日報!E:E の列の中に、他の値が入っていた場合は
 上手く行かない原因の一つになると思います。

 実際はどの様なレイアウトにしたのか。
 それぞれのセルにはどの様な式を入れたのか。
 私が↑でニッキーさんに説明した様に説明して頂ければと思います。

 表組みは、エクセルで作成してこちらへ貼り付けると
 簡単に記入できるのではないかと思います。
 その際、レイアウトが崩れても 構わずそのまま載せて下さい。

 (HANA)

 下のような表になっています。
作業日報と給与計算のシートは別ですが、ここでは一緒に掲載しました。

 (作業日報のシート)

 作業日報									
 日付	業者名	   現場名      人数   出   向   者   氏   名					
 4月28日	植木組	    落合班        2   中畑	 田中				 
 4月28日	京葉開発機構 東洋スチレン	1   高橋					
 4月28日	昌運工業	    姉崎火力	3   伊藤 佐藤	荒井			

 (給与計算のシート)

 給与計算									
 田中									
 日    付	 業者名								
 4月1日									
 4月2日									
 4月3日									
 4月4日									

 田中のシートでは、業者名の右側には給与の基本給や残業などのデータが入っています。
田中の1か月の給与を計算するとき、日報のシートが1カ月分入力されていないと集計出来ないと言うことになりますか。

 田中のシートには、休みが入るように派遣された日だけの表示にはなっていないのですが、解決できますか?

 よろしくお願いします。  (ニッキー)								


 当初私が載せた給与計算のシートは
 作業日報から該当の日付だけを選び
 上から詰めて表示する物ですが
  4/1 の次は 4/3 に成っていますよね?
 実際は、カレンダーが事前に作ってあると言う事ですか?

 でしたら、数式が少し変わりますね。

 後気になるのは
 >田中のシートでは、業者名の右側には給与の基本給や残業などのデータが入っています。
 の様に固有のデータが入るのなら
 >>この部分の仕組みが全ての人で同じ(データだけが違う)
 と言う訳では無くなってくると思いますが?

 それから、どのセルにデータが有るのか
 セル番地が分かるようにして下さい。

 >田中のシートには、休みが入るように派遣された日だけの表示にはなっていないのですが
 この部分は、どうなればよいのか良く分かりません。

 もう少しサンプルデータ量を増やして
 希望結果図も載せて下さい。

 >>こんな感じの事かな〜? と思ってましたが。。。
 っていうのを、そちらから投稿してください。
 「おおよそ同じ」では駄目な場合も有ります。
   まぁ、今回がそうなんだと思いますが。

 (HANA)

(作業日報のシート)

	A	B	C	D	E	F	G	H	J
1	日付	業者名	現場名	人数	出   向   者   氏   名				
2	4月28日	植木組	落合班	2	中畑	田中			
3	4月28日	京葉開発機構	東洋スチレン	1	高橋				
4	4月28日	昌運工業	姉崎火力	3	伊藤 	佐藤	荒井		
5	4月28日	京葉産業	IMT	4	藤本	横尾	梅沢	平田	

J2のセルに関数が入ると言うイメージです。

(給与計算のシート)

	A	B	C	D	E	F	G	H
1		田中						
2	日    付	業者名	工数	基本給	残業	残業手当	諸手当	支給合計
3	12月1日		0.0	0		0		0
4	12月2日		0.0	0		0		0
5	12月3日		0.0	0		0		0
6	12月4日		0.0	0		0		0
7	12月5日		0.0	0		0		0
8	12月6日	休	0.0	0		0		0

D3のセルには
=IF(C4="",0,IF(C4="休",0,IF(C4="出張 休",0,9000))) という関数が入っています。
F3のセルには
=IF(F4="",0,1000*F4) という関数が入っています。
人によって、D3のセルの関数の中の数字が変わっています。
=IF(C4="",0,IF(C4="休",0,IF(C4="出張 休",0,8500))) だったりします。

カレンダーはあらかじめ作成してあります。ですから、田中さんが派遣された日の日報の日付と給与計算のシートの同じ日付にデータが反映されないといけないと言うことです。

こんな感じで判るでしょうか・・・。
よろしくお願いします。   (ニッキー)


 感じはわかるのですが、B8セルに「休」と言うのが事前に入っているのですか?
 そして、これから数式を入れようとしているのもB列なんですよね?

 あとは、数式は御提示のレイアウトとずれてるみたいです。

 「休」「出張」などの情報は何処に入っているのでしょう?
 また、B1セルの名前を変えて使うのなら
 >人によって、D3のセルの関数の中の数字が変わっています。
 と言うのも、人によって変える必要がありますよね?

 。。。と、どの様な数式になれば良いのか良く分からないので
 業者名を参照するイメージとしては、前回作業列に
 =IF(COUNTIF(C2:D2,給与計算!$B$1),ROW(),"")
 の式を入れましたが、ここで ROW() を返すのではなく
 A列の日付を返す様にして下さい。
=IF(COUNTIF(E2:I2,給与計算!$B$1),A2,"")

 給与計算のシートの方は、直接日付を検索します。
=IF(COUNTIF(作業日報!J:J,A3),INDEX(作業日報!B:B,MATCH(A3,作業日報!J:J,0)),"")

 こんな感じにすれば、該当の日付の物が参照出来る様に成ると思います。

 (HANA)


HANAさん 本当にありがとうございました。
出来ました!!! こんなに関数で悩んだことなかったです。助かりました。
今回、サンプルのデータや、出来上がりデータを詳しく載せられなくて何度もお手間を取らせてしまい、大変申し訳ありませんでした。これからも宜しくお願いします。<m(__)m>
 (ニッキー)

コメント返信:

[ 一覧(最新更新順) ]


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