アプリ版:「スタンプのみでお礼する」機能のリリースについて

途中まで作成してみましたが、できなかったのでお教え願います。

(1)シート<入力用>に以下のように入力されています。
┃ ┃A ┃B   ┃C  ┃D     ┃E     ┃ 
━━━━━━━━━━━━━━━━━━━━━━━
┃1┃日付┃社員番号┃休暇等┃業務開始時間┃業務終了時間┃
┃2┃0926┃11111111┃休  ┃      ┃      ┃
┃3┃0927┃11111111┃直  ┃8:30    ┃17:30    ┃
┃4┃0928┃11111111┃   ┃8:30    ┃18:30    ┃
┃5┃0926┃22222222┃研  ┃8:30    ┃17:30    ┃

といった状態で約120名のランダムなデータがべた打ちされてます。

(2)(1)を以下のような集計表に飛ばしたいのです。
 
┃ ┃A   ┃B ┃C ┃D ┃E ┃・・・・・・
━━━━━━━━━━━━━━━━━━━━━━━
┃1┃    ┃0926┃0927┃0928┃0929┃・・・・・・
┃2┃11111111┃休 ┃直 ┃  ┃・・・・・・
┃3┃22222222┃研 ┃  ┃  ┃・・・・・・
┃4┃33333333┃・ ┃・ ┃  ┃・・・・・・
┃5┃44444444┃・ ┃・ ┃  ┃・・・・・・

行:日付
列:社員番号

飛ばしたい情報は、(1)の<休暇等>文字列です。

ためしに、(2)のB2に以下の式を入れてみました。
B2=index(入力用!A2:E5,match(B1,入力用!A2:A5,0),match(A2,入力用!B2:B5,0))
当然ですが、日にちが帰ってきました。が、なぜか0927が帰ってきました。

このINDEXとMATCHを利用して(1)のC2:C5にある文字列を拾えないでしょうか?

宜しくお願いいたします。

A 回答 (3件)

◆少し、式が長くなりましたが


B2=IF(ISNA(MATCH(B$1&$A2,INDEX(入力用!$A$1:$A$100&入力用!$B$1:$B$100,),0)),"",INDEX(入力用!$C:$C,MATCH(B$1&$A2,INDEX(入力用!$A$1:$A$100&入力用!$B$1:$B$100,),0)))
★右と下にコピー
    • good
    • 0
この回答へのお礼

一行で実行できるのは、とても魅力的です。
ありがとうございました!

お礼日時:2008/09/28 13:36

「集計表」のセル B2 に次の[条件付き書式]を設定


   数式が    =ISERROR(B2)
   フォント色  白
同セルに次の配列数式を入力して、此れを右方および下方にズズーッとドラッグ&ペースト
   {=INDEX(入力用!$C$2:$C$1000,MAX((入力用!$A$2:$A$1000=B$1)*(入力用!$B$2:$B$1000=$A2)*ROW($2:$1000))-1)&""}
    • good
    • 0
この回答へのお礼

簡潔に、有意義な情報提供ありがとうございます!
早速やってみます!

お礼日時:2008/09/28 13:35

基本的に関数は、表の組み換えは不得意です。


表が社員番号順に並んでいるとして、VBA向きの問題です。
例データ
Sheet1 A1:F12
F列は関数で作成。
F2に=B2&A2と入れて下方向に式を複写。作業列。
日付社員番号休暇等業務開始時間業務終了時間合成キー
92611111111休              11111111926
92711111111直  8:3017:3011111111927
92811111111   8:3018:3011111111928
92622222222研  8:3017:3022222222926
92633333333出33333333926
92833333333休33333333928
92644444444健診44444444926
9274444444444444444927
92844444444研  44444444928
9294444444444444444929
93044444444出44444444930
Sheet2
A-F列(A列は空白)
B列は社員番号が順に重複なくあるものとして(注)
日付についても同じとする。
926927928929
11111111休  直     #N/A
22222222研  #N/A#N/A#N/A
33333333出#N/A休#N/A
44444444健診0研  0
C2セルに
=INDEX(Sheet1!$C$1:$C$100,MATCH($B2&C$1,Sheet1!$F$1:$F$100,0),1
と入れて、横方向に式を複写。
次にy縦方向に式を複写。
結果
上記。
ーー
ただし(注)はフィルターフィルタオプションの設定ー重複するレコードは無視するなどでできる(略)
エラーが出ていることの対策は
=IF(ISERROR(上記式),"",上記式)
のようにする(略)
--
エクセルの場合はこういう場合、合成キーを作らざるを得ないと思う。
日付は上記では数にしているが、本来日付シリアル値なのだが、その場合、式の変更なくうまく行くと思うが。(未検証)
合成キーは各項目ごと定桁で揃えて合成すべきだが、今回略。
    • good
    • 0
この回答へのお礼

すごく丁寧に回答してくださり、ありがとうございます。
とても勉強になりました!
VBAも少しずつ勉強してみたいと思います。

お礼日時:2008/09/28 13:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!