[[20090211133749]] 『他ファイルのデータにフラグをつけたい』(きよみ) ページの最後に飛ぶ

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

 

『他ファイルのデータにフラグをつけたい』(きよみ)
 ある一覧表から違うデータ移行(フラグをつける)しようと思い、
 関数をつかっているのですが、思うようにいかずに困っています。
 下記一覧表と、移行先のファイルの内容を書いておきます。

 一覧表(以下、A-セル名)
   A    B    C    D    E      F       G     H     I
 1ID番号 氏 名 ふりがな 資格名 資格番号  資格番号&氏名  資格の有無 取得年月日 経過年数
 2ID番号 氏名1 ふりがな 資格A  資格A番号 資格A番号&氏名 資格の有無 取得年月日 経過年数
 3ID番号 氏名1 ふりがな 資格B  資格B番号 資格B番号&氏名 資格の有無 取得年月日 経過年数

 別ファイル(以下、B-セル名)
   A       B   C   D    E      F    G     H     I     J
 1印刷フラグ ID番号 氏 名 入社日 資格Aフラグ 取得年月日 経過年数 資格Bフラグ 取得年月日 経過年数
 2           ID番号 氏名1 入社日 資格Aフラグ 取得年月日 経過年数 資格Bフラグ 取得年月日 経過年数

 ・Aファイルは1人がいくつもの資格を持っている人は、
 各資格ごと1行使っており、Bファイルは1人1行を使い、
 資格はE列以降の該当資格にフラグ(1)を立てます。

 ・BファイルにはすでにID番号と氏名は入力されているので、関数は入れません。

 ・現在、資格フラグ(B-E2)に関数を入れているのですが、資格Aと資格Bが関係なく
 フラグが立ってしまうので、資格A(B-E2)には資格A(A-F2)のフラグが立ち、
 資格B(B-H2)には資格B(A-F3)のフラグが立つようにしたいのです。

 ・関数は、「=IF(ISERROR(VLOOKUP(B2,[A.xls]Sheet1!$A:$J,6,0)),"",1)」でいれていますが、
 たぶん、VLOOKUPの検索値に新たに違う関数を入れないとダメと思うのですが…

 ややこしく書いていると思いますが、ご教授願います。

 後々は、Bファイルを元に証明書等を作っていく予定です。
 よろしくお願いします。

 [エクセルのバージョン]
 Excel2003,Excel2002,Excel2000
 [OSのバージョン]
 WindowsXP,Windows2000

 キーとして、「ID番号&資格名」の列を
 ブックAの先頭列に作成しておくのはどうでしょう。

 ブックAの各行のに、それぞれ違うキーがつくことになるので
 VLOOKUP関数で参照できるようになると思います。

 以下、同じブック・別シートでのサンプルですが。
 Sheet1	[A]     	[B]  	[C]	[D]	[E]	[F]   	[G]     	[H]	[I]    	[J]   
[1]	ID番号&資格名	ID番号	氏名	ふりがな	資格名	資格番号	資格番号&氏名	有無	取得年月日	経過年数
[2]	A-001_資格A	A-001	氏名1	ふりがな	資格A	資格A番号	資格A番号&氏名	有	取得年月日	経過年数
[3]	A-001_資格B	A-001	氏名1	ふりがな	資格B	資格B番号	資格B番号&氏名	無	取得年月日	経過年数
 A2に
=B2&"_"&E2

 Sheet2	[A]     	[B]  	[C]	[D]	[E]	[F]    	[G]   	[H]	[I]    	[J]   
[1]	印刷フラグ	ID番号	氏名	入社日	資格A	取得年月日	経過年数	資格B	取得年月日	経過年数
[2]	     	A-001	氏名1	入社日	有	取得年月日	経過年数	無	取得年月日	経過年数
 E2に
=VLOOKUP($B2&"_"&E$1,Sheet1!$A$1:$J$3,8,FALSE)

 実際にご使用の際は、エラー処理等加え得下さい。

 また、作業列の作成が不可。あるいは、A列には挿入不可 等ありましたら
 別の方法を使う必要がありますので、詳細を書いて見られるのが良いと思います。

 (HANA)

HANAさんありがとうございます。
 教えて頂いた関数で1度試してみます。
 あと、その他のやり方があれば教えて下さい。

(きよみ)


 >あと、その他のやり方があれば教えて下さい。

 >別の方法を使う必要がありますので、詳細を書いて見られるのが良いと思います。

 詳細をかかないと・・。
 (とおりすがり)

 自分で書いておいて「詳細って何の事だっけ?」とか
 思ってしまったので、自己フォローです。

 詳細ってのは
  作業列の作成が不可 なのか
  A列には挿入不可 なのか
  その他気になる点があれば
 って事でした。

 データ量や、関数を入れる範囲にもよりますが
 作業列を使っておくのが わかりやすくて良いと思いますけどね。

 あとは
 「資格の有無」
 って所には何が入っているのか気になります。

 >・Aファイルは1人がいくつもの資格を持っている人は、
 >各資格ごと1行使っており
 と言うご説明から
 データがある=資格を持っている
 かと思うのですが、もしかして「取得チャレンジ中」とか
 そういった情報が入っていたりするのですかね。
 それともやはり「有、無」が入っているのでしょうか。

 (HANA)

 お返事が遅くなってすみません。
>詳細ってのは
  作業列の作成が不可 なのか
  A列には挿入不可 なのか
  その他気になる点があれば

 作業列やA列の挿入は可能です。
 A列を挿入して「ID番号&資格名」を入れる事は理解できるのですが
 作業列という意味が…A列の事でしょうか?

 データ量は、約300人分のデータが移行の対象になり、1人あたり1〜5つぐらいの
 資格を持っており、かなりの量になると思います。

 「資格の有無」については、会社に資格証明書(合格通知)を持って来たかどうかの
 確認の為だけにあるので、移行先には直接関係がないそうです。(データ管理者談)

 移行先には、フラグの「1」と取得年月日だけになります。

 よろしくお願いします。
 (きよみ)

 >作業列という意味が…A列の事でしょうか?
 はい、A列の事です。
 A列は結果の列ではなく、結果を導くための列なので、作業列。

 >データ量は、かなりの量になると思います。
 ですか・・・・。
 とりあえず、数式を埋め込んでみてください。

 >移行先には、フラグの「1」と取得年月日だけになります。
 経過年数もですよね?

 E2セル(フラグ)
=COUNTIF(Sheet1!$A$1:$A$10,$B2&"_"&E$1)
 F2セル(取得年月日)
=IF(E2,VLOOKUP($B2&"_"&E$1,Sheet1!$A$1:I$10,9,FALSE),"")
 G2セル(経過年数)
=IF(E2,VLOOKUP($B2&"_"&E$1,Sheet1!$A$1:$J$10,10,FALSE),"")

 この3セルをコピーして、必要範囲に貼り付けてください。
 なお、各数式の範囲を1〜10行目にしてありますので
 実際の範囲に合わせて下さい。

 数式だと厳しいかもしれませんが
 まずは、必要最低限の範囲に限って
 やってみてください。

 (HANA)

 あっっ、済みません。
 COUNTIF関数を使うためには
 参照元のブックを開いておく必要が有りました。

 両方を開いて作業できるなら良いですが
 そうでない場合は違う関数を使って下さい。
=NOT(ISNA(MATCH($B2&"_"&E$1,[Book1.xls]Sheet1!$A$1:$A$10,0)))*1
 の様な。。。

 (HANA)

 すみません、他の仕事をしていて、やっと落ち着いてできました。
 取得年月日と経過年数は問題なく移行できるのですが、
 資格を持ってる人のフラグ「1」は出ますが、持っていない人に「0」が出ているので
 「0」を出ない方法等はありますか?
 私が思ったのは、表示形式ですればいいのかなぁと思っているのですが…。

 よろしくお願いします。
 (きよみ)

 たびたび済みません。
 表示形式で対応してもらっても良いかもしれませんが
 ここは一つ、数式を変更して
 E2
=IF(ISNA(MATCH($B2&"_"&E$1,[Book1.xls]Sheet1!$A$1:$A$10,0)),"",1)
 F2
=IF(E2="","",VLOOKUP($B2&"_"&E$1,Sheet1!$A$1:$I$10,9,FALSE))
 G2                                          ~~~~~ここもなおしました。
=IF(E2="","",VLOOKUP($B2&"_"&E$1,Sheet1!$A$1:$J$10,10,FALSE))

 でどうでしょう。

 (HANA)

 すみません、確認ですが…
 今
 E2
 =COUNTIF(Sheet1!$A$2:$A$240,$B2&"_"&$E$1)
 にしているのですが、この場合も下記の関数でした方がいいでしょうか?

 E2
=IF(ISNA(MATCH($B2&"_"&E$1,[Book1.xls]Sheet1!$A$1:$A$10,0)),"",1)

 当初「他ファイルから移行する」と言っていましたが、
 データ管理者に確認しましたら、
 「同一ファイルで(別シートからの移行)おこなってもいい」という確認ができましたので…。

 システムを作るのに、まだ不安がありいろいろ言いますが
 よろしくお願いします。
 (きよみ)

 同じファイルで良いのなら、COUNTIF関数で良いですが
 「0」が表示されてしまいますので、IF関数は有った方が
 良いと思います。

 E2に
=IF(COUNTIF(Sheet1!$A$2:$A$240,$B2&"_"&$E$1)=0,"",1)

 E2セルの式を変更した場合、戻り値が "" か 1 に成りますので
 F2,G2セルの式も変更になります。

 表示形式で対応するのなら、この限りでは有りませんが。

 (HANA)


HANAさん、ありがとうございます。
 移行する事はできましたが、移行した分から身分証明書に
 氏名とフラグ「1」が入った資格名を転記できるようにしたいのです。
 フォームはまた改めて書きますが、以前教えて頂いた
 https://www.excel.studio-kazu.jp/cgi-bin/kazuwiki2.cgi?mycmd=read&mypage=[[20071107133540]]
 ようにしようと思いますが…(VLOOK関数で)

 どうでしょうか…?
 (きよみ)

 >移行した分から
 と考えると、行き詰まりそうに思います。
 元データも活用しながら 考えてみるのが宜しいかと思います。

 表示させる順番が決まっていないなら
 元データからのみで考えるのが良さそうに思います。

 (HANA)

 すみません。

 上記で書いたように、移行したデータから身分証明書へ転記を
 どうしてもしたいのです。
 転記したい内容を書いてみます。
 W4…ID番号(手入力)
 Q6…氏名(移行ファイルより転記)
 M8〜M13…資格名(移行ファイルでフラグ「1」が」ついた資格名)

 元データを参照すればいいのですが、移行したデータの意味がなくなってしまいます。
 情けないと思いますが、よろしくお願いします。

 (きよみ)


 お伺いしてみますが
  (1)身分証明書へ転記する際、資格名の順番としてご希望が有りますか?
  (2)移行したデータは、身分証明書へ転記するために作成しましたか?
  (3)身分証明書は、一度に一人の物が出来れば良いのですか?

 (HANA)

 すみません。
 >(1)身分証明書へ転記する際、資格名の順番としてご希望が有りますか?
      順番は、「資格A」・「資格B」という順に入っている中の
       フラグが入った資格名がほしいです、

 >(2)移行したデータは、身分証明書へ転記するために作成しましたか?
       はい。移行ファイルから転記をして印刷をしたら、
       移行ファイルのA列の「印刷フラグ」にフラグを立てるようにしたいです。

 >3)身分証明書は、一度に一人の物が出来れば良いのですか?
       1度に10人分できればいいのですが…

 無理な事とは思いますが、よろしくお願いします。

 (きよみ)

 済みません、どういったことをなさりたいのか分かりません。

 (1)>フラグが入った資格名がほしいです
 つまり順番は関係ない?

 (2)>はい。
 でしたら、先に「印刷すること」を考えるべきです。
 エクセルが扱いやすいのは、元データの様な様式で
 移行したデータは 扱いにくいデータです。

 非常に簡単に書くと
    1   , 0.5 , 0.8 というデータを
   10/10 , 1/2 , 4/5 に変更した様なものです。
 「せっかく変更したのに!!」と言っても
 足し算することを考えたら、
 変更する前のデータを使用した方が良さそうですよね。

 (3)>1度に10人分できればいいのですが…
 こちらも、どこにどのように?
 その10人はどうやって選ぶのか?
 など、分かりません。

 (HANA)

 >(1)>フラグが入った資格名がほしいです
 つまり順番は関係ない?
      資格名が左の列から順番に並んでいますよね。
      左の列からフラグが入っている順に転記してほしいのです。

 >(2)>はい。
  でしたら、先に「印刷すること」を考えるべきです。
  エクセルが扱いやすいのは、元データの様な様式で
  移行したデータは 扱いにくいデータです。

 非常に簡単に書くと
    1   , 0.5 , 0.8 というデータを
   10/10 , 1/2 , 4/5 に変更した様なものです。
 「せっかく変更したのに!!」と言っても
 足し算することを考えたら、
 変更する前のデータを使用した方が良さそうですよね。
      扱いにくいデータとは思いますが、どうしても使いたいです。
      会社のシステム管理者に聞いてみても「できる。そのために移行したのだから…」
      と言われ、「自信を持ってやれ」とも言われました。

 >(3)>1度に10人分できればいいのですが…
  こちらも、どこにどのように?
  その10人はどうやって選ぶのか?
  など、分かりません。
     A4用紙に身分証明が10枚分入るようになっており、
     印刷したいID番号をW4に手入力して表示させ、印刷します。

 (きよみ)

 う〜ん、自信を持つとか、持たないとか
 そう言う問題では無いのですけどね。

 一応お伺いしてみますが
 資格名はいくつ有りますか?

 (2)>移行ファイルのA列の「印刷フラグ」にフラグを立てるようにしたいです。
 関数で表示している以上、フラグをたてる事に
 意味を感じないのですが。

 それから、こちらも一応お伺いしてみますが
 (3)>印刷したいID番号をW4に手入力して表示させ、印刷します。
 10人分有るのに、一つしか番号は入れないのですか?

 あと一点、私にとって重要な所ですが。
  身分証明書を印刷することが目的ですか?
  移行データを使うことが目的ですか?

 (HANA)

 もしかして、
 A,B,Cの資格の内、AとCのみ持っていてBを持って居ない場合

	・・・・	[M]	・・・・	[Q]	・・・・	[W]
[1]						
[2]						
[3]						ID番号
[4]						A-001
[5]				氏名		
[6]				氏名1		
[7]		資格名				
[8]		資格A				
[9]			←この行は空き			
[10]		資格C				
[11]						
 持ってない資格の所は
 空き行にしておいて良かったりするのですかね?

 でしたら移行データからでも
 簡単に表示出来そうに思いますが。

 (HANA)


 >一応お伺いしてみますが
  資格名はいくつ有りますか?
    17個です

 >(2)>移行ファイルのA列の「印刷フラグ」にフラグを立てるようにしたいです。
  関数で表示している以上、フラグをたてる事に
  意味を感じないのですが。
    同じ人間の証明書を1回していれば、重複して印刷しないで済むと思いますが…

 >それから、こちらも一応お伺いしてみますが
  (3)>印刷したいID番号をW4に手入力して表示させ、印刷します。
  10人分有るのに、一つしか番号は入れないのですか?
    すみません。W4だけではなく、各証明書フォームのID番号入力欄に入力して
    表示させます。
    氏名セル(Q6)に
     =VLOOKUP(W4,[book1.xls]さぎょう!$B$1:$BC$1288,2,0)
    で氏名の転記ができました。

 >あと一点、私にとって重要な所ですが。
  身分証明書を印刷することが目的ですか?
  移行データを使うことが目的ですか?
    両方です。

 >持ってない資格の所は
   空き行にしておいて良かったりするのですかね?
    空き行にしないで、本当にフラグを立てている資格名のみ転記したいのです。

 (きよみ)

 今回問題なのは
 >空き行にしないで、本当にフラグを立てている資格名のみ転記したいのです。
 この部分です。
 そして、これを考えるのに私は 作業スペースは勿論必要ですが
 元データから必要なデータを得た方が やりやすいと思います。

 数が少なければ、「IF関数で」とも思ったのですが
 17個有るとなると そう言うわけにも行かない様です。

 「移行データを使わなくてもよい」と言うのなら
 数式等を考えてみようかと思いますが
 そうで無い様ですので、これ以上のコメントは
 控えさせて頂こうと思います。

 移行データから表示させるのが不可能だ
 と言う訳ではありませんので、頑張って下さい。

 (HANA)

 先ほど、会社の上司から
 「IF関数がすごくなると思うけど、してみてもいい」と言ってくれたので
 時間がかかると思いますが頑張ってみます。

 (きよみ)

コメント返信:

[ 一覧(最新更新順) ]


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