こんにちは。WINDOWS NTでEXCEL2000を使っています。
BOOK1に伝票No(当然重複なし)・得意先名・件名等のデータベースとなる表があり、これは毎日更新(年間2万件程度)されるものとします。
これを使ってBOOK2で伝票Noを入力すると自動的に得意先・件名等の必要な情報を表示させたいのですがVLOOKUPやDGETではうまくいきませんでした。
このようなことはACCESSでないと無理なのでしょうか?VBAを使って何とか実現できないかと色々本やHPを読み漁っているのですがいい方法が見つかりません。知恵を貸してください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

下の表の時、VLOOKUPで可能でした。



A列、B列、C列、D列
伝票No、得意先、件名、備考、

=VLOOKUP(B2,[BOOK1.xls]Sheet1!A2:D30000,2,FALSE)

BOOK1のSheet1を元のデータとして
BOOK2のセルB2に入力した「伝票No」から
完全一致するものを表示する。
上の式は、2列目を表示なので得意先を表示します。
件名は、3、備考は4に変えます。

自機で約3万件では、ほとんどすぐに表示されました。

充分な回答でなければ質問ください。

この回答への補足

できました!伝票番号が文字列設定で入力されていたものがあって並べ替えができていなかったようです。BOOK1を閉じてもちゃんとBOOK2のデータは表示されるのもわかって安心しました。
ここでもう1つ質問なのですが、このVLOOKUP関数で表示させた後にコピーして値に変換したほうがよいのでしょうか。(データが重くなるのがちょっと心配です)
kenken0001さんが使っていて今まで特に問題はなかったですか?
注意すべき点などあったら教えてください。

補足日時:2002/02/28 13:40
    • good
    • 0

無事うまくいったようで


おめでとうございます。

補足の件ですが
たしかにデータは重たいですが
計算式とデータではそれほど
変わらないかもしれません。
(計算式を値にしても△)

変わるのは、ちょこちょこ
シートを変更することがあるかどうかによります。
変更するたびに再計算の処理をするので
頻繁に開いて更新することがある時は
問題が無ければ、再計算の中止設定をします。
(お手数ですが、不明な場合は再度質問下さい)
→ データではなく処理の重さについて

データについては、
繰り返し出てくるものに関して全てを
実データで表示すると重たくなります。
具体的には「得意先名」です。
限られたものだけなら
出力されるデータを「得意先コード」として出力し
エクセルで「得意先名」に変換することで
ものによりますが軽くなると思います。
(これも詳しくは質問下さい)

ただ、
質問に書かれた内容だけですが
実際のエクセルで作ってみましたが

データ数3万件
CPU P200
メモリ 96MB
WIN95 Excel97

と、かなりgoodなマシンですが
入力→パタパタ
と、結構快適に表示してましたので
このままでもわたしとしては
そんなには重たくないですね。

どのような表、処理かで違いますが
(質問では書かれていない内容があり
もう少し複雑とか)
その辺がもう少し分かると
何かできることもあるかもしれません。

あまり大したことを書けなくてすいません。
何かありましたら小さなことでも結構です、質問下さい。


がんばって下さい。
ではでは。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました。おかげさまで無事設定を終了することができました。データの重さも処理の速度も問題なさそうです。このままうまく稼動して問題が起きないことを祈るのみです。

お礼日時:2002/03/01 19:07

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル 伝票、等を連続印刷

初心者です。エクセルでデータ30件を別シートの伝票等に連続で印刷する方法で困ってます。
ます、データが30件あって(全て支払日時、金額、支払先が異なる)
それを伝票に1件1件連続印刷したいのでが、(マクロを使って) その方法はデータ1から30までを上から順に印刷して合計30枚の伝票を作りたいのです。(支払日、支払先 金額)を伝票のシートの下のほうに貼り付けて(印刷しても文字が隠れるように印刷範囲を指定して)その数値を伝票の各項目と=で結んであります。1番目のデータを印刷したら その次に 2番目、3番目と
最後30番目まで続くように自動で設定したいのです。
私が本をみてやってみたら、2番目、3番目と連続してプリントアウトできません 1枚で終わってしまいます。
初心者ですが よい方法を教えて下さい。
もしかしたら、こんな感じですか? Worksheets(2).Range("A2:A30").PrintOut

Aベストアンサー

何度も登場します。
Do Until ActiveCell.Value = ""
・・
Loop
でも繰り返しが出来ますが、同じ内容が繰り返し印刷されませんか?
i=1
Do Until ActiveCell.Value = ""
i=i+1
・・
Loop
とかして、変数を使わないといけないと思うのですが、大丈夫でしょうか?

QBook1からBook2へコピー/貼り付け

Excel2003です。基本知識かもしれませんがお尋ねします。
たとえばBook1のSheet1をそっくりそのままBook2の空いているSheetへコピー/貼り付けする方法なのですが。
コピーから「形式を選択して貼り付け」を選択してどの項目を選んでも行の幅とかが違ってくるのです。手間をかけて行幅を微調整して、作成したSheetなのにまた貼り付け先で調整しています。
列幅は選択肢にありますね。
どんな方法でもかまいませんので、お教えください。

Aベストアンサー

Book1とBook2を両方開いた後、メニューのウインドウから整列。
左右に並べて整列をします。
そしてBook1のSheet1をCtrlキーを押しながらドロップして、Book2に持っていって下さい。
この時マウスから先に放して下さい。
これでシートごとそのままコピーできます。

QExcel2000のbookとExcel97のbookとの互換性は?

Excel2000のbookとExcel97のbookとは、互換性があるのでしょうか?
友からの質問です。私のExcelは2002ですので、わかりません。よろしくおねがいします。

Aベストアンサー

#1です。
ごめんなさい。マクロは別です。
Excel5.0→Excel97では動かないことを経験しましたので、ひょっとしたら動かないものがあるかもしれません。

Q複数のBookから決まったセルの値を別のBookに

お世話になります。
EXCELで複数のBOOKから決められたセルにある値を抽出してひとつのBOOKに纏めたいのです。

BOOK1~50、 BOOKには31枚のSheetがあります。
その中のSeet31にSeet1~30のデーターを纏めてあります。
Seet31の A1~3 B1~2 C1~3 のデーターを抽出して
新しく作ったBook【集計】のSeet1にBook1~50から抽出した
データーを縦に並べたいのです。

【 例 】

  A1 A2 A3 B1 B2 C1 C2 C3
1  5  2  4  3  6  7  1  3
2  2  3  4  6  9  7  5  2
3  7  8  5  6  2  3  1  8

と、いった感じです。
なお、Book名は『漢字+数字』です。

宜しくお願いします。

Aベストアンサー

マクロという方法を使った方が簡単なので,次の通りにします。


準備:
Book1から50を1つのフォルダに集めておく
集計ブックも作成して同じフォルダに入れておく

手順:
集計ブックを開く
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
 dim myPath as string
 dim myFile as string
 dim t as workbook
 dim w as worksheet
 dim r as long, c as long

 application.screenupdating = false
 set w = activesheet
 cells.clearcontents
 range("A1") = "File Name"
 range("B1:I1") = array("A1","A2","A3","B1","B2","C1","C2","C3")
 r = 1

 mypath = thisworkbook.path & "\"
 myfile = dir(mypath & "*.xls*")
 do until myfile = ""
  if myfile <> thisworkbook.name then
   r = r + 1
   w.cells(r, "A") = myfile
   set t = workbooks.open(filename:=mypath & myfile)
   for c = 2 to 9
   w.cells(r, c).value = t.worksheets(31).range(w.cells(1, c).value)
   next c
   t.close false
  end if
  myfile = dir()
 loop
 application.screenupdating = true
end sub

ファイルメニューから終了してエクセルに戻る
ALT+F8を押し,登録したマクロを実行する。

マクロという方法を使った方が簡単なので,次の通りにします。


準備:
Book1から50を1つのフォルダに集めておく
集計ブックも作成して同じフォルダに入れておく

手順:
集計ブックを開く
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
 dim myPath as string
 dim myFile as string
 dim t as workbook
 dim w as worksheet
 dim r as long, c as long

 application.screenupdating = false
 set w = activesheet
 cells...続きを読む

QEXCELのマクロでBook1立ち上げ時に自動で別のBookを起動するには

あるアプリケーションでEXCEL型式での出力処理をすると自動的にEXCELが起動し、「Book1」として出力されます。
このときに、自動的に別の.xlsファイルが起動するマクロを組みたいと考えています。

他のEXCELファイルから起動する際にはこの機能は必要ないため、「Book1」が開いたときにのみ有効にしたいのです。

どうぞ、お知恵をお貸しください。

Aベストアンサー

VBAProject(PERSONAL.XLS)
に、クラスモジュールを追加

クラスモジュールのプロパティを下記に設定

(オブジェクト名) EventClassModule
Instancing 1-Private

EventClassModule クラスに下記のコードを追加
'-------------------------------------------
Public WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If (Wb.Name = "Book1.xls") Then
'----------------------------
'実際には開きたいブックに変更
Call Application.Workbooks.Open(C:\abc.xls")
End If
End Sub
'-------------------------------------------


ANo.2 さんの回答で記載した
Sub Auto_Open()
Workbooks.Open "C:\abc.xls" ←フルパスで
End Sub

の部分を下記に変更
Dim X As New EventClassModule
Sub Auto_Open()
Set X.App = Application
End Sub

ここで、一旦ブックを保存 → PERSONAL.XLS 再立ち上げして
Book1を読み込んでみてください。

VBAProject(PERSONAL.XLS)
に、クラスモジュールを追加

クラスモジュールのプロパティを下記に設定

(オブジェクト名) EventClassModule
Instancing 1-Private

EventClassModule クラスに下記のコードを追加
'-------------------------------------------
Public WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If (Wb.Name = "Book1.xls") Then
'----------------------------
'実際には開きたいブックに変更
Call Application.Workbooks.Open(C:\abc.xl...続きを読む


人気Q&Aランキング

おすすめ情報