• ベストアンサー

エクセルで2つのファイルを参照する方法について

教えて頂ければ非常に助かります、、 ファイル1は、Aセルに1~500ぐらいまでの通し番号が振られているデータ、 ファイル2は、Aセルに飛び飛びの番号(例3、7、15…)のデータが入っている という状態で、 このファイル2の番号をファイル1の番号の行にデータ追加したい場合、どのようなマクロ若しくは関数を使えば良いのでしょうか。 アクセスがインストールされていないPCなので、エクセルで作成したいと考えています。 どうか宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • oresama
  • ベストアンサー率25% (45/179)
回答No.3

ファイル1のどこか空いてる列(仮にE列)の1行目に =if(iserror(vlookup(a1,ファイル2!A:D,4,0)),vlookup(a1,ファイル2!A:D,4,0)) と入れて、その結果をファイル1のD列に、 ”値の貼り付け”したら如何ですか??  ヘルプを見ていただければお分かりになりかと思いますが、 要は ・ファイル2にその番号がない場合はそのままdのデータ ・番号があれば、ファイル2のデータ  となります。

garfield
質問者

お礼

教えていただいた通りの関数を書き入れて無事に作業を終えました。 いくつかの関数を一度に使うことで、複雑なことを簡単にしてしまうのはすごいですね、とても参考になりました。エクセル関数もすばらしい! 実際に振られていた番号は1000まであり(今後も増えるようです)、範囲指定を列全部に書いていただき、分かり易く実行できました。 本当にご回答いただいてありがとうございました。

その他の回答 (2)

回答No.2

ファイル2のファイル名を「Book2」とし、その「Sheet1」のA1からA8に番号、B1からB8にデータが入っているとします。 そこでファイル1のD1に =IF(ISERROR(VLOOKUP(A1,[Book2]Sheet1!$A$1:$B$8,2,0)),"",VLOOKUP(A1,[Book2]Sheet1!$A$1:$B$8,2,0)) と入力し、あとは最終行までコピーすればOKじゃないでしょうか?

garfield
質問者

お礼

ありがとうございます。 今、お教えいただいた方法で作業してみました。 関数というものは、奥が深く、使いこなすには大変なことと思いました。 ご指導ありがとうございました。とても助かりました。

  • moon00
  • ベストアンサー率44% (315/712)
回答No.1

いまいち状況がよく掴めないのですが。 新しいファイルのA列にファイル1のA列、B列にファイル2のB列を リンクとして持ってくるという前提での話をします。 1)ファイル1のA列全体をコピー(列番号をクリックすると列全体を選択します)し、 新しいファイルのA列に「形式を選択して貼り付け」で「リンク貼り付け」を選択。 2)同じようにしてファイル2のA列全体を新しいファイルのB列にコピー。 これでどうでしょうか? もし、ファイル1とファイル2のA列の数字を合計したいと言うことであれば、 上記の2)のところでコピー先をデータ入力済のA列とし、 「形式を選択して貼り付け」で演算の「加算」を選択。(この場合、ファイル2のデータははリンクされません) このような方法でどうでしょうか?

garfield
質問者

補足

説明が不十分ですみません。補足いたします。 ファイル1のA列は1~500番までの番号が通しで(抜けてません)入力されていて、B列とC列にはデータが入力されています。 ファイル2は上記ファイル1のD列に追加させたいデータで、A列には残念ながらファイル1のように1~500までの番号がすべて入力されているわけではなく、追加させたい番号だけが入力されているのです。(追加させたいD列がフィルター表示されているように思ってください。)

関連するQ&A

  • 2つのエクセルから同じデータを持つ行を出力する方法

    エクセルで作成した二つのDBがあります。それぞれ、列・行の数は異なるのですが、同じ名称の列(例えば郵便番号)を持っています。 この二つのファイルから、同じ列に同じ情報をもった行を取りだす、ということをしたいのですが、関数やマクロでの実現できる方法がございましたら、教えて頂けないでしょうか。 例:二つの住所録のようなファイルAとファイルBがあって、郵便番号が154-0001のデータ(行)を、別のファイルCに出力する。(また、ファイルC上では、各データがファイルAとファイルBのどちらから出力されたものかも、判別が付くように出力したい) 分かりにくいケースで大変恐縮ですが、ご存じの方がおりましたら、どうぞよろしくお願いいたします。 ※エクセル2003を使用しています。

  • エクセルのセル参照

    エクセル2007です。教えてください。 Sheet1のA1に「郵便番号」、A2に「住所」、A3に「氏名」、A4に「請求金額」を入力するとします。 これを100件入力すれば、「1」から「100」の行を使いますよね。 次にSheet2に請求書を作ります。A1に「郵便番号」、A2に住所、B1に「氏名」、C1に「請求金額」を 表示させたいのです。連続させてSheet1のセル参照を使うと、行が違うので直してやらなければなりません。 1件や2件ならともかく、100件となると…。関数では無理なんでしょうねえ。ではマクロ? どういうマクロを組んだらいいのか教えてください。

  • Excelでの参照方法

    お世話になります。 Microsoft Excelについて教えてください。 行単位で一つのまとまりのデータがあるシートで 1行目を参照するために、 セル1 「=A1」 セル2 「=B1」 セル3 「=D1」 というようにします。 2行目を参照する時には セル1 「=A2」 セル2 「=B2」 セル3 「=D2」 というようにいちいち書き直すのは面倒です。 どこかのセルに「x」と参照したい行番号を入れて、そのセルの値を参照して、 セル1がAx セル2がBx セル3がCx を参照するような記述はどう書けば良いでしょうか? ご存じのかたがありましたら、教えてください。 よろしくお願いします。

  • Excelでふたつのファイルの違いを特定する方法はありますか?

    エクセルデータのファイルAがあったときに、 ファイルAのデータをもとに行単位で情報が追加/削除 あるいは既存データの一部項目(セル単位)が修正されたファイルBがある場合、 両方のファイルを開いてAとBの違い、追加・削除分が特定できる方法(関数?)があったら教えてください。 修正後のデータが別システムとの連携で別に吐き出されるため、 単純に色を変えたりハイライトすることができず 膨大な量の元データから、変更内容を探すのに手間がかかり困っています。

  • エクセルの関数で、セルに書いたファイル名を参照

    エクセルの関数で、セルに書いたファイル名を参照する方法が知りたいです。 エクセル関数初心者レベルです。 別のファイル(開いた状態)に欲しいデータがあって、そのデータをexcel関数(できればOFFSET関数等)を使って他のファイルで参照します。 その際、その関数に記載されるファイル名を別のセルに記入して、それを参照させるようにしたいのですが、どうすればよいのでしょう。 たとえば、afile.xlsというファイルのbsheetというシートのA1セルに欲しいデータ(数字または文字)があるとします。 afile.xlsを開いた状態で、別のファイル(new.xlsとします)のセルに、"="で参照させると =[afile.xls]bsheet!$A$1 という関数が入り、データも表示されています。 ここで、たとえばnew.xls上の B2セルに " afile.xls " とベタ打ちして、 上掲の=[afile.xls]bsheet!$A$1の [afile.xls] のところをB2セルを参照させるようにしたいです。単純にB2と打ち変えてみたりもしたのですが、うまくいかないようで。 どなたか教えて頂けるとたすかります。よろしくお願いいたします。

  • エクセル98、もしくは2003の操作のALT+ENTER

    普通エクセルでは右のセルがが空白の場合長文をいれても 右のセルにも文が見えるようになっています。 この状態で文を何行にもすることはできるのでしょうか? ALT+エンターをやるとセルが大きくなってしまいます 具体例 A1に長文をいれる A1以外が全て空白とします A1に入りきれないのでB1、C1、D1に続けて見えます これをA1、B1、行が変わってA2,B2に文が見えるようにしたい。 A1のセルの大きさは変えたくありません。 環境はエクセル98、もしくは2003です エクセル98で表をマクロをつかって作りたいのですが 記録するファイルを開いてないため保存できません という感じのエラーがでます。 表作成のときはマクロを使い、使い終わったらそのマクロは そのファイルでは使えなくする、つまりそのファイルを開いても マクロが使用されています。と警告が出ないようにする。 そのマクロ自身はほかのファイルを作成するときにまた使う という状態にしたいのですがうまくいきません どうすればいいのでしょうか?

  • 「エクセル」で、「アクセス」のようにデータを呼び出したい

    「Excel2000」を使用しています。 少し、ややこしいのですが… たとえば住所録で、 「sheet1」の 1行目にリストのタイトルが入っていて、 A2、A3…に通し番号、 B2、B3…に名前、 C2、C3…に住所、 D2、D3…に電話番号 が入っているとします。 その時、「sheet2」の (たとえば)A2に 「sheet1のA2」に入っている通し番号を入力すれば、 その行に入力されている名前や住所や電話番号が、 任意のセル(たとえばD10、C8、C9)に表示される… といったことは可能でしょうか? こういったことは「Access」が 得意なんだと思いますが、なんとか エクセルで出来ないものでしょうか? マクロなどを使うのでしょうか? マクロはほとんど触ったことがないのですが、 チャレンジしてみますので お教え願えませんでしょうか。

  • EXCELのマクロがわかりません・・・

    現在、A列にデータが並んでいるのですが、 これを7つ区切り(例:A1~A7、A15~A21)にして、 別シートに用意した表に行列を入れ替えて、 貼り付けるマクロを作っているのですが、 なにぶんVBは素人ですので、よくわかりません。 今作ろうとしているマクロは、 「元データ」セルのA1からA7までをコピーして、 「作成データ」セルのB2を起点として、 コピーした内容の行列入れ替えを行い貼り付け、 以後、「元データ」のコピー範囲を7つづつ 下にずらし、「作成データ」の貼り付け起点を 1つづつ下にずらして、「元データ」のA列の 最後までくりかえすものです。 必ず「Range」文で引っかかってしまうのですが、 何か構文的におかしいでしょうか? かなり急ぎですので、 わかる方、よろしくお願いしますっ!! 下に、作成したマクロを貼り付けます。 Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2005/12/5 ユーザー名 : *** Worksheets("元データ").Activate 開始行 = -6 終了行 = 0 ペースト行 = 0 Do 開始行 = 開始行 + 7 終了行 = 終了行 + 7 ペースト行 = ペースト行 + 1 開始セル番号 = "A" & 開始行 終了セル番号 = "A" & 終了行 ペーストセル番号 = "B" & ペースト行 Range("開始セル番号:終了セル番号").Select Selection.Copy Sheets("作成データ").Select Range(ペーストセル番号).Select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True Loop End Sub

  • 複数のEXCELファイルを一度にインポートするには?

    150個のEXCELのファイルがあります。 列はすべて同じデータで、行数だけがファイルによって違います。 だいたいどのファイルも30行ぐらいです。 これをすべてひとつのファイルにまとめたいのですが、どのような処理をすればいいのか、今ひとつ思いつきません。 EXCELのひとつひとつのファイルを開いて、新しいファイルにひたすらコピーしていくには時間がかかるし、Accessにひとつずつインポートしていくにも時間がかかってしまうので、複数のEXCELのファイルを一度にまとめる方法がありましたら、教えていただきたいのですが。。。 とにかく150×30行のデータを一つのファイルにつくりたいのですが、何かいい方法がありましたら、ヒントでもいただけたらお願いします。 Accessはクエリ程度、EXCELは関数を使える程度で、マクロは全く初心者です。 よろしくお願いいたします。

  • エクセルで列の取得

    A1セルに名前、A2セルに番号、A3セルに趣味と入ったエクセルがあり、B行から各々のデータを入れたものがあります。 このデータを使って別のエクセルに、A1に趣味、A2に名前と順番を変えたシートを作りたいんですが、コピペでやるのが早いのは分かるんですが作業が面倒なので、なにかしら関数を入力してあるエクセルファイルに、元となるエクセルデータをsheet1にいれれば勝手にsheet2が生成されるみたいなことをやりたいです。あるファイルの列を違うsheetに並べ替える関数なんてものは存在するのでしょうか?また、このようなことがしたい場合方法はありますでしょうか? やりたいことがうまく説明できないんですがよろしくお願いします。

専門家に質問してみよう