【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?

エクセルで、マクロを使わずに、やってみたいのです。
シフトの勤務表があります。
B4~B18に氏名が入ってます。
Cが、1日で AGが、31日です。
C4~AG4
C18~AG18
ここに、勤務予定が入ってます。
日(日勤) 準(準夜勤) 深(深夜勤) とかです。

ここで、別シートに、
準夜勤の氏名一覧表を、作りたいのです。
1日は
C4 C5 C6
ここに、氏名が出るようにしたいのです。

2日は、
D4 D5 D6 です。

最初に書きましたが、マクロは使えないので、(能力不足)
使わずにできる方法を、教えてください。
よろしくお願いします。

A 回答 (3件)

ご質問の内容を解決するには、以下の手順を行ってください。


sheet2が準夜勤の氏名一覧表となります。
1 sheet1にご説明のシフトの勤務表様式を作成する。
2 sheet2にへ氏名のB列を除いて、全く同じ様式を複写します。
※便宜上、以降の説明の中で、sheet1を(1)、sheet2を(2)とします。
3 (1)のB4~B18を範囲指定しておき、ツールバーの「挿入(I)」を
 クリックします。
4 挿入のドロップダウンメニューから「名前」を選択します。
5 名前のドロップダウンメニューから「定義」を選択します。
6 「名前の定義」というダイアログボックスが開きますので、
 一番上の入力欄に「B4~B18」に付ける名前を入力し、OKを
 クリックします。
 ※ここでは便宜的に、「氏名」と名付けます。
7 (2)を開きC4セルをクリックし、以下の計算式を入力します。
  =IF(Sheet1!C4="準",氏名,"")
8 C4の計算式をクリック&ドラッグで、C4~AG18の範囲に複写します。

  以上です。

 注1 IF文の論理式が偽の場合ですが、後で表を改良して、セルの
   値を調べる必要が出てくる場合もありますので、ZEROや空白
   (スペース)でなく、null("")を指定しておく方がBetterと
   思います。
 注2 IF文中の(1)のシート名ですが、計算式作成後にシート名を
   変更した場合、自動で計算式内のシート名も変更されます。
 注3 計算式の入力時、(1)シート名の入力はキーボードからタイプ
   しなくても、(1)のC4をクリックすれば自動的に挿入されます。 

この回答への補足

早々のご教授ありがとうございます。
さっそく、やってみました。
氏名が表示できるようになりました。

勤務者の氏名のピックアップが、やりやすくなりました。

無理を言うようですが、
準夜勤者が、3名と決まっています。
C4~AG18の範囲内に名前が出るのでなく、
C4~E18
この3行に 3名の名が出るようになると、
ピックアップせずに済みます。

このようにバージョンアップすることは、可能でしょうか?

よろしくお願いいたします。

補足日時:2008/05/10 10:58
    • good
    • 6
この回答へのお礼

勉強になりました。
詳しいご説明ありがとうございました。

お礼日時:2008/05/11 08:13

すみませんでした。


今、最初の質問を読み返したら、補足質問の内容が出てました。
最初から、このスペックだったんですね。
内容をよく確認せずに、簡単に回答してしまったようです。
失礼しました。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2008/05/11 20:45

 3名の準夜勤者の氏名を、横に連続した3つのセルに表示したいとの


要望で良いですね?
 一般に、Excelのデータベース系関数(Lookup系 Dget etc.)はデータベースの
検査を行い、検査値が見つかった時点で、その検査を停止します。
  ※データの個数をCountする場合は除く
 このため、準夜勤者の氏名を検索し、最初の1名の氏名を見つけた
時点で、検査は終了してしまいます。
 以上のことから、Excelのデータベース系関数を用いてご要望の
内容を実現する事は難しいです。
 マクロを使用しないという前提で考えると、文字列操作系の関数を
複数+データ仮置用シート等を使用して機能を実現する事になると
思います。
 不可能ではありませんが、相当に面倒な作業ですね。
 20年位前に、BASICで似たような事をやった覚えが有りますが、
Excelの関数では、私も未経験です。
 もう少し時間を頂いて、整理してみたいと思います。
 回答の字数制限、800字以内で説明できるか、どうか…
 ところで補足質問の内容ですが、ご要望の様式は準夜勤者の氏名を
横に並べるということですね。
 この場合1日から31日の日付は縦に並ぶという事ですか?
 sheet1やsheet2の様式から変更して、このシートだけ日付と氏名の
縦横が入れ替わると相当面倒になります…
 縦に3名並べて横に日付の方が、よろしいかと思いますが。
 

この回答への補足

丁寧なご説明ありがとうございます。

ご指摘とおり 縦に3名並べます。

エクセルの関数として、最初に見つかった時点で、
検索をやめるという性質もよくわかりました。

800字以内で、ご説明できないことに関して、
私も初心者ですので、あまり難しことは、できませんので、

一度に書きだすのでなく、最初にピックアップしたシートを、
縦3行に書き出すようにやってみたいと思います。

どうもありがとうございました。

補足日時:2008/05/11 08:02
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報