[[20080417150535]] 『違うエクセル表からデータを違うファイルへ抽出し』(HO) ページの最後に飛ぶ

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

 

『違うエクセル表からデータを違うファイルへ抽出したい』(HO)

 発注リストと言うファイル@
 出荷明細と言うファイルA
 @のデータに新しくデータが追加された際、同じ情報をAに抽出する事は出来ますか?
 @が更新されて、数日後にAを更新していくので
 どのデータを更新したか把握しきれません。
 更新したいのは、@の項目発注番号と得意先コードです
 教えてください!

 何が言いたいのかよく解からない。

 >@のデータに新しくデータが追加された際、同じ情報をAに抽出する事は出来ますか? 
 >更新したいのは、@の項目発注番号と得意先コードです

 @のデータに新しくデータが追加された際、@の項目発注番号と得意先コードをAに抽出する
 ということ?
 @の項目発注番号と得意先コードをコピペすれば良いのでは?

 >@が更新されて、数日後にAを更新していくのでどのデータを更新したか把握しきれません。 

 @に転記済フラグの列を追加して転記したら"済"とでも入れたら良いのでは?
 "済"の変わりに"転記した日付"を入れると、後で見直す時に便利だからなお良いかも。

 (FA)

 失礼致しました。
 補足いたします。
 ファイル1(発注リスト)のデータに発注番号と得意先コード他を入力します。
 それと同様の内容を違う形のファイル2(出荷リスト)に転記しなければいけません。
 データがあちこちに飛んでいるものを転記したいので、
 コピペになると、作業が数十回に及びます。
 例えば、1行目、10行目、20行目、22行目 の 発注番号と得意先コードと言った感じです。
 なので、ファイル1(発注リスト)に新しい情報が入ったら、ファイル2(出荷リスト)にも
 抽出できるような関数か機能かが何かあったらいいな。。。と思ったわけです。
 何かありますでしょうか? 
 (HO)


 フォーマットがよくわかりません。
 私が想像したのは
 ファイル1(発注リスト)

 	〔A〕	〔B〕	〔C〕	〔D〕	〔E〕	〔F〕	〔G〕
 〔1〕	発注番号	得意先コ-ト	データ1	データ2	データ3	データ4	転記
 〔2〕	000258	Q2225694	0	0	0	0	
 〔3〕	000259	Q2225695	0	0	0	0	済
 〔4〕	000260	Q2225696	0	0	0	0	済
 〔5〕	000261	Q2225697	0	0	0	0	済
 〔6〕	000262	Q2225698	0	0	0	0	済
 〔7〕	000263	Q2225699	0	0	0	0	済
 〔8〕	000264	Q2225700	0	0	0	0	済
 〔9〕	000265	Q2225701	0	0	0	0	済
 〔10〕	000266	Q2225702	0	0	0	0	
 〔11〕	000267	Q2225703	0	0	0	0	済
 〔12〕	000268	Q2225704	0	0	0	0	済
 〔13〕	000269	Q2225705	0	0	0	0	済
 〔14〕	000270	Q2225706	0	0	0	0	済
 〔15〕	000271	Q2225707	0	0	0	0	済
 〔16〕	000272	Q2225708	0	0	0	0	済
 〔17〕	000273	Q2225709	0	0	0	0	済
 〔18〕	000274	Q2225710	0	0	0	0	済
 〔19〕	000275	Q2225711	0	0	0	0	済
 〔20〕	000276	Q2225712	0	0	0	0	
 〔21〕	000277	Q2225713	0	0	0	0	済
 〔22〕	000278	Q2225714	0	0	0	0	
 〔23〕	000279	Q2225715	0	0	0	0	済
 〔24〕	000280	Q2225716	0	0	0	0	済
 〔25〕	000281	Q2225717	0	0	0	0	済
 〔26〕	000282	Q2225718	0	0	0	0	済
 〔27〕	000283	Q2225719	0	0	0	0	済
 〔28〕	000284	Q2225720	0	0	0	0	済
 〔29〕	000285	Q2225721	0	0	0	0	済
 〔30〕	000286	Q2225722	0	0	0	0	済

 とかで

 ファイル2(出荷リスト)

	〔A〕	〔B〕	〔C〕	〔D〕	〔E〕	〔F〕
〔1〕	番号	発注番号	得意先コート	データ1	データ2	出荷日
〔2〕	1	000259	Q2225695	0	0	2008/2/11
〔3〕	2	000260	Q2225696	0	0	2008/1/30
〔4〕	3	000261	Q2225697	0	0	2008/2/19
〔5〕	4	000262	Q2225698	0	0	2008/4/3
〔6〕	5	000263	Q2225699	0	0	2008/2/18
〔7〕	6	000264	Q2225700	0	0	2008/3/30
〔8〕	7	000265	Q2225701	0	0	2008/4/10
〔9〕	8	000267	Q2225703	0	0	2008/1/31
〔10〕	9	000268	Q2225704	0	0	2008/2/14
〔11〕	10	000269	Q2225705	0	0	2008/3/30
〔12〕	11	000270	Q2225706	0	0	2008/4/9
〔13〕	12	000271	Q2225707	0	0	2008/1/10
〔14〕	13	000272	Q2225708	0	0	2008/4/12
〔15〕	14	000273	Q2225709	0	0	2008/2/3
〔16〕	15	000274	Q2225710	0	0	2008/2/19
〔17〕	16	000275	Q2225711	0	0	2008/1/15
〔18〕	17	000277	Q2225713	0	0	2008/2/11
〔19〕	18	000279	Q2225715	0	0	2008/3/28
〔20〕	19	000280	Q2225716	0	0	2008/1/20
〔21〕	20	000281	Q2225717	0	0	2008/1/24
〔22〕	21	000282	Q2225718	0	0	2008/2/25
〔23〕	22	000283	Q2225719	0	0	2008/4/1
〔24〕	23	000284	Q2225720	0	0	2008/1/24
〔25〕	24	000285	Q2225721	0	0	2008/3/31
〔26〕	25	000286	Q2225722	0	0	2008/1/22

 の27以降に追加するという事かと。

 この場合、ファイル1に対して、データ→フィルタ→オートフィルタを設定。
 G列の▼を押して、空白セルを選ぶ→ファイル2にコピー貼り付け

 (FA)

 ありがとうございます。
 詳細がわかりづらくてすみませんでした。
 ファイル1は合ってます!
 貼り付けの際ですが、〔27〕以降に貼り付けて並び替えをしているんですか?
 ファイル2にあたる表はデータが膨大なので、並び替えを何度もすると心配なんで
 出来ればあまりいじりたくないのです。
 ファイル2は上記同様発注番号順に並んでいます。
 ファイル1から新規データのみコピーしてきて、
 うまく注文番号の場所にデータを埋め込むような形が出来ないかな?と思っています。
 あまりうまく説明できていないと思いますが、ご理解いただけたでしょうか?

 並び替え・・。データは普通にAの行の一番下に追加するものと思っていました。
 つまり
 @に行を挿入してデータを追加
 Aにも行を挿入してデータを追加ということですか?

 質問です。
 @のファイル・シートはどれくらいありますか?
 Aの発注番号はすでに通しで振ってあるのですか?

 (FA)

 その通りなんです。
 両方挿入になるんです。
 現状、@の発注リストの状態は下記のようです。

 発注番号  担当者  得意先コード 得意先名   品名   品番  数量
 00001      田中   32050   日本商事  えんぴつ  A0000  100
 00002      鈴木   55600   大和文具  けしごむ   B0000     50
   
 基本、発注番号順に並べていますが、抜けてデータが私の元に届く為
 後から抜けているものを挿入する事が多いです。
 Aの出荷明細リストは下記のような状態です。
 AのSheet1メインになるSheet
 注文番号  品名  品番  単価  担当  得意先コード  得意先名(セルに関数)
 00001    えんぴつ A0000  100  田中   32050     日本商事
 00005    したじき  C0000     80   佐藤   80050     田中文具

 *得意先名はSheet2から関数で引っ張ってくるようになっています。
 Sheet2のサブシート
 発注番号  得意先コード 得意先名
 00001    32050   日本商事
 00002    55600   大和文具

 逆 にわかりづらくなっていたらすみません。大体の形をいれてみました。
 質問事項のAですが、発注番号は通しでは振っていません。
 何故なら、例えば、発注番号00001に対し、実際は品物が2件入ってしまう
イレギュラーな事があります。
 この為入れていないのですが、実際ファイル2のほうでしたら連番で入れることは可能だと思います。
 それから、今回はわかりやすくデータを簡単に作ってみた為
 ファイル@とファイルAの情報が同じようになっていますが
 実際は項目が結構違います。
 わかりづらくてすみませんが、宜しくお願いします。

 すみません。どなたかわかる方いらっしゃいませんでしょうか。。。

 よくわかりませんが、発注リストのシートにデータを追加したら
 出荷リストのシートも同じように表示されるということなら、
 発注リストのSheet1が元データとして、出荷リストのA2セルへ

 =IF(OFFSET([発注リスト.xls]Sheet1!$A$1,ROW()-1,COLUMN()-1)="","",OFFSET([発注リスト.xls]Sheet1!$A$1,ROW()-1,COLUMN()-1))

 以下、下と右に必要なだけコピー。はずしてたらごめんなさいです。
  
(純丸)(o^-')b

 逆に質問してもいいですか?
 発注リストと出荷リストは別のファイルに保存されているデータですが、
 それでこの関数をいれてOKって事ですか?

 >逆に質問してもいいですか?
 HNを書きましょう「逆に」って言うことはトピ主さんではないですよね?(dack)

 提示した関数はダミーのシートでいいので、入れてみてどうなるか
 お確かめ下さい。
 
(純丸)(o^-')b

(dackさん)
逆に質問したのは当の本人でした。すみません。

(純丸さん)
わかりました!Tryして見ます!!!

(HO)


 今関数をいれてみましたが、式のまま全く反応しません。
 関数を見て、よーく考えましたが、A1が固定になっているんですよね。
 データはランダムに入るんですが、これは合っていますか

 例えば
 1000
 1001
 1003
 1004
 1005
 1007

 上記のようにデータが並んでいて、1002と1006は後で挿入で間に入ってくるようになります。
 なので、A1を絶対値にすると違ってしまうような気がしますかどうでしょうか?
 (HO)


 >式のまま全く反応しません   
 書式が文字列になっていませんか?

 >A1を絶対値にすると違ってしまうような気がしますか 
 A1は、OFFSET関数の規準点として固定してます。
 
(純丸)(o^-')b

 すみません。いろいろとやってみてます。
 まず、反応しなかったのはただ頭に空白が入っていました。すみませんδ(⌒〜⌒ι)
 式もどうにか入りました!
 元のエクセル表(@)の1列目の100行目にデータを挿入してみました。
 コピー先の表(A)の 1列目に挿入したいので、一番下の行にあたるところに関数をいれました。
 一度両方とも閉じて、再度開きましたが反応なし。
 この作業はあっていますでしょうか?
 (HO)


 元のデータが100行あったら、入力シートは、
 2行目から150行くらいまでのセルに数式を入力して下さい。
 
(純丸)(o^-')b


 これって
  ブック名「発注リスト」のデータシートの内容が
  列の配置を換えてブック名「出荷明細」のシートに
  そっくりそのまま表示されればよい
 という事ですか?

 それとも、
  「出荷明細」のシートには
  これまでの「発注リスト」のデータから、その行に
  特有のデータを入力してあるため
  「発注リスト」の行が増えた場合「出荷明細」の行を
  【挿入】して、該当行を表示させたい
 のですかね?

 ↑の確認と重複しますが

 >それから、今回はわかりやすくデータを簡単に作ってみた為 
 >ファイル@とファイルAの情報が同じようになっていますが 
 >実際は項目が結構違います。 
 その「違う項目」というのは、得意先名のように
 別の場所から関数で参照している(行に固有の物ではない)
 のでしょうか?

 それとも、「発注リスト」と共有している[発注番号]と[得意先コード]
 を確認して、「出荷明細」に直接の追記事項が有るのでしょうか?

 一応、もう一度確認。

 A1セルに得意先コードが入っていたとして、B1セルに
 得意先名を関数で参照していた場合、A1セルの値が変わると
 B1セルの結果も、該当する物に変わりますよね。

 ただし、A1セルに得意先コードが入っていて それを見て
 B1セルに、例えば 担当者を【入力】した場合
 A1セルの値が変わっても、B1セルの値は変わりません。
 よって、「B1セルの値はA1セルに該当する物ではない」
 という事態が発生します。

 ご希望の事は、前者ですか?後者ですか?

 >実際は項目が結構違います。
 の部分が気になります。
 それぞれの項目はどの様な物で
 どの部分にどの様なデータが入る事に成っているのでしょう?

 (HANA)

 (純丸さん)
 昨日の関数を何度も入れなおしてみました!
 純丸さんの言う通り、関数を入れている箇所が違ったようです。
 データがある箇所全て関数を入力してみたら、データが全て出ました!!!
 ただ不明点があり確認させてください。
 @のファイルF列からAのファイルにデータを抽出。
 教えてもらった関数をいれてF列をチョイスしたら何故かG列が抽出されてきました。
 なので、D列を関数に入れたら、F列が抽出されました。
 これは関数のどこが間違えているのでしょうか?

 (HANAさん)
 お話頂いたうちの希望は前者のようです。
 実際は項目が違います。と書いたのは
 仮で起こしたデータの@とAそれぞれの項目が似たような形で作っていたので
 それなら、違ういい方法があります!と言ったような形になる事を想定して
 添えさせていただいたコメントです。
 逆に混乱させてしまったようですね。失礼致しました。
 項目は10項目以上ありますが、関数が入っているものは、得意先コードから得意先名を
 ひっぱってくるような関数のみです。
 宜しくお願いします。
 (HO)

 双方のブックを同時に開いた状態で
 行の挿入作業等をする可能性が有りますか?

 (HANA)

 はい。あります!
 質問ですが、この関数は片方が閉じたままでも大丈夫なのですか?
 開いた時に、上手く関数が動いてくれると言う事ですかね?
 (HO)

 >質問ですが、この関数は片方が閉じたままでも大丈夫なのですか? 
 やってみましたか・・・?

 それとも「エラー値が表示される様になるが正常か?」と言うご質問ですか?

 私がお伺いした目的は
 「出荷明細」を閉じた状態で「発注リスト」の操作をするのなら
 単純に「=」で参照すればよいと思ったからです。

 双方開いて操作をする可能性があるのなら
 たとえば、「発注リスト」のA列を参照したい場合
=IF(INDEX([発注リスト.xls]Sheet1!$A:$A,ROW())=0,"",INDEX([発注リスト.xls]Sheet1!$A:$A,ROW()))
 の様な式を使ってみるのはどうでしょう。
 ブックが重くなるかもしれませんが。

 (HANA)

 はい。やってみました。
 何回もはやっておりませんが、先ほどTryした時は問題ありませんでした。
 ただ、上記に明記したとおり関数の選択箇所がずれるようで
 それだけ少し気になっております。
 それからデータ入力は双方開いて作業する場合もあれば、片方だけの時も多いです。
 そうなるとOFFSET関数が適しているという事ですかね?
 (HO)

 >先ほどTryした時は問題ありませんでした。
 問題ないのですか?
 私のエクセルは、OFFSET関数は参照先を開いていないと
 エラー値を表示しますが・・・。

 「発注リスト」を開いている状態で「出荷明細」を開き
 その後「発注リスト」を閉じた場合は、「出荷明細」に
 値が残りますが
 「発注リスト」が閉じている状態で「出荷明細」を開いても
 問題なく表示されていますか?

 >上記に明記したとおり関数の選択箇所がずれるようで 
 と言うことですが
 >教えてもらった関数をいれてF列をチョイスしたら
 この「チョイス」と言うのは具体的にどの様な作業の事ですか?

 またOFFSET関数がどの様な関数か調べてみましたか?

 (HANA)


 >私のエクセルは、OFFSET関数は参照先を開いていないと
 >エラー値を表示しますが・・・。

 いや〜大ボケでした。私の方でもエラーになります。
 検証不足でした。申し訳ありません。m(__)m
 HOさん、HANAさんの数式を採用して下さい。
 
(純丸)(o^-')b

 本当ですね!!!
 参照元だけ開いて入力して、参照先を開いたら一度は何故か入力されました。
 続いて再度参照元に登録した後閉じて、参照先を開いたらエラーとなりました。
 チョイス。すみません。
 出荷番号を引っ張りたいので、出荷番号を選択と言うことですね!
 OFFSET関数を用いていたので、理解しないと次が使用出来ないので確認しております。
 ただ、大体掲載されているものは、同じシート内で、指定したものをひっぱってくると言ったものでしたが。。。
 先ほどHANAさんからご指示があった関数を再度使用してみます。
 両方のファイルを開かないと実行しないという事でしたね!
 Tryしてみます。

 (純丸さん)
 ありがとうございました!私もいろいろ勉強になりました!助かりました!

 (HO)

 >出荷番号を引っ張りたいので、出荷番号を選択と言うことですね!
 どこにどの様に選択したのですか?
 使用していた式を載せて下さい。

 >ただ、大体掲載されているものは、同じシート内で、指定したものをひっぱってくると言った 
 >ものでしたが。。。
 まずは同じシート内でのものをご理解下さい。
 どこに何を指定した場合、どのセルが参照されるか分かりましたか? 

 >両方のファイルを開かないと実行しないという事でしたね!
 実行しない = 値を返さない と言う事で有れば 
 OFFSET関数はそうです。開いて居ないとエラーになります。
 INDEX関数は、「更新しますか?」と聞かれます。

 (HANA)

出力したい箇所に書き関数を入れました。

=IF(OFFSET([受注書.xls]2008年度'!$D$3,ROW()-1,COLUMN()-1)="","",OFFSET([受注書.xls]2008年度'!$D$3,ROW()-1,COLUMN()-1))

上記が実際入っていた式です。

実際〔受注書〕のEに発注番号が並んでいます。

もうひとつの関数を試してみます!


 =IF(OFFSET([受注書.xls]2008年度'!$D$3,ROW()-1,COLUMN()-1)="","",OFFSET([受注書.xls]2008年度'!$D$3,ROW()-1,COLUMN()-1)) 
                                  ^^^^                                                        ^^^^
 基準はA1セルとして数式を作っています。
 
(純丸)(o^-')b


 OFFSET関数の件。
 参照して表示させたい列と、参照する列が違う場合は
 列数,高さの調節が必要になってくると思います。

 その様な場合は基準を変えてしまうのが良いかと思いますが・・・。

 OFFSET関数がどこを表示するのか
 次の様な事をして確認してみるのはどうでしょう。

 Sheet1に↓の様な表を作ります
 Sheet1	[A]	[B]	[C]
[1]	A1	B1	C1
[2]	A2	B2	C2
[3]	A3	B3	C3
[4]	A4	B4	C4
[5]	A5	B5	C5
[6]	A6	B6	C6
 これは、A1セルに
=ADDRESS(ROW(A1),COLUMN(A1),4)
 を入れてフィルドラッグすると簡単に表示出来ると思います。

 次にSheet2のA1セルに
=OFFSET(Sheet1!$A$1,ROW(A1)-1,COLUMN(A1)-1)
 として、Sheet1と同じ範囲フィルドラッグします。

 この式は、純丸さんご提示の式で ROW関数とCOLUMN関数の
 引数を省略せずに書いた物です。

 ROW(A1) はA1セルの行番号「1」を返し
 COLUMN(A1)はA1セルの列番号「1」を返します。
 どちらも「-1」しているので、OFFSET関数は
=OFFSET(Sheet1!$A$1,0,0)
 となり、Sheet1A1セルを行方向に0,列方向に0オフセットした
 A1セルの値を返します。

 たとえば、B5セルの式を見てみると
=OFFSET(Sheet1!$A$1,ROW(B5)-1,COLUMN(B5)-1)
 の様に成っているとおもいます。

 ROW(B5)はB5セルの行番号「5」を返し
 COLUMN(B5)はB5セルの列番号「2」を返します。
 どちらも「-1」しているので、OFFSET関数は
=OFFSET(Sheet1!$A$1,4,1)
 となり、Sheet1A1セルを行方向に4,列方向に1オフセットした
 B5セルの値を返します。

 基準となるセルを色々変えてどこのセルを参照するのか
 試してみて下さい。

 (HANA)

 HANAさん、詳細なフォローをありがとうです。
 
(純丸)(o^-')b

ありがとうございます。

理解できるまで時間がかかるかもしれませんが、Tryしてみます。
(HO)


 えっと・・・INDEX関数を使用した方は
 上手く行きましたかね?

 今回のご希望には、OFFSET関数は向かないようですので
 ゆっくり理解していただければ宜しいかと思います。

 (HANA)

仕事の合間にちょっといっぱいになっておりました!!!

INDEX関数を途中までやって、先にOFFSET関数をしっかり理解しているところです。

明日にでも今度はINDEX関数を実際使用するデータに組み込んでみようと思います。

またご報告いたします。

本日はたくさんのフォローありがとうございました!

(HO)


(HANAさん)が提示していただいた関数でデータを抽出する事が出来ました!

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


コメント返信:

[ 一覧(最新更新順) ]


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