「忠犬もちしば」のAIボットを作ろう!

エクセル形式の申請書を受領し、その一覧表をエクセルで作成したいと思っています。
申請書の形式は同じなので、名前、住所、性別などの項目を
1つ1つ一覧表にコピペすればよいのですが、
受領する度に1つ1つの項目を一覧表へ、貼り付けしなくてはなりません。

例:
申請書一覧表.xls

申請書01.xls
申請書02.xls
申請書03.xls

私が考えているやり方では、一覧表の例えばA1に申請書のファイル名(申請書01.xls)、
B1に申請書のワークシート名(sheet1)を入れれば、自動的に申請書の各項目を
一覧表の行(C1,D1,・・・)へ引っ張って来るような一覧表を作成したいと思っています。
これを実現するのに、一覧表のC1セルに、=INDIRECT("["&A1&"]"&B1&"!$C$3")
 ・A1は一覧表上で申請書のファイル名(申請書01.xls)を記名したセル
 ・B1は一覧表上で申請書のワークシート名(Sheet1)を記名したセル
 ・$C$3は申請書01.xls内の参照項目の1つ(例:名前)
で、実現をやってみましたが、
indirect関数は申請書のファイルを開いていないと出来ず、困っています。
申請書は1日に30件程度来て、一覧表だけを見て、例えば田中さんからは何件来ている
とか、一覧表のみを見れば、申請書の全てが分かるように管理したいと思っています。
処理状況管理も一覧表で行いたいと思っています。

申請書一覧表.xlsは、申請書01.xlsよりも一段上のフォルダに置きたいと思っていますが、不可能なら、申請書と一緒のフォルダでも構いません。

また欲を言うと、一覧表から申請書をクリックで開けるようにできたら良いと
思っています。

良い実現方法がありましたら、教えてください。

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

A 回答 (3件)

#1です。



>下記の、
>>="=["&A1&"]"&B1&"!$C$3"
>>上記の式をD1に入力し、それをE1セルへ値コピー後、F2キー、Enterキー
>>とすれば大丈夫かと思います。
>を試してみたのですが、上記をそのまま入れると、
>そのまま=[申請書一覧表.xls]Sheet1!$C$3とそのまま表示されるだけで、
>申請書から引っぱって来ません。

普通に式を入力すれば、文字列としての=[申請書一覧表.xls]Sheet1!$C$3というのが表示されるのは問題無いです。
なので、それを隣のセルなどにコピーして、形式を選択して貼り付けから値で貼り付けます。
そうすると、セルの値も=[申請書一覧表.xls]Sheet1!$C$3というのに変わります。
ここまでは文字列とされてますので、数式としてExcelに認識させる為に、F2キーを押して編集してからエンターで確定させる事です。
F2キーでなくても、ダブルクリックしてセルを編集できるようにしてからのエンターでもOKです。
※表示形式が文字列になっている場合はできないので、標準に直して下さい。

下記はちょっとしてヒントになりますが、
まず、申請書01.xlsを開いておき、申請書一覧表.xlsのどこかのセルに=(半角イコール)を入力し、申請書01.xlsのどこか一つのセルを指定します。
そうすると、=[申請書01.xls]Sheet1!$C$3のような数式になると思います。
その後に申請書01.xlsを閉じると、
='C:\●●●●●\◇◇◇◇◇\[申請書01.xls]Sheet1'!$C$3
みたいになると思います。
これを参考にしてもらえればある程度対応できると思われます。
毎日ファイル名が変更されないのであれば、一回この方法で全部のセルを参照すれば翌日から自動で参照してくれると思います。
    • good
    • 0
この回答へのお礼

上記の件、ありがとうございました。
やり方としては、申請書のワークシートを
一覧表のワークシートへ移して、=indirect()を使うようにして、
対応することにしました。

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

お礼日時:2009/04/14 22:39

VBAの一例です


申請書一覧表のsheet1の
A1に申請書のファイル名(申請書01.xlsなど)
B1に申請書のワークシート名(sheet1など)
申請書ファイルがあるフォルダ名を"C:\"に
myFolder = "C:\"
申請書から引っぱって来くる、セル
myData = Array("c1", "d1", "e1", "f1", "g1")
それぞれ書き換えてください

'標準モジュールへ
Sub test()
Dim myFolder As String
Dim myFile As String
Dim myWS As String
Dim myBook As Workbook
Dim myData As Variant
Dim 開いたブック As Workbook
Dim i As Integer
Set myBook = ActiveWorkbook
myFolder = "C:\"
myFile = myBook.Worksheets("sheet1").Range("a1").Value
myWS = myBook.Worksheets("sheet1").Range("b1").Value
myData = Array("c1", "d1", "e1", "f1", "g1")
Workbooks.Open filename:=myFolder & "\" & myFile
Set 開いたブック = Workbooks(myFile)
For i = 0 To UBound(myData)
myBook.Worksheets("sheet1").Range(myData(i)).Value _
= 開いたブック.Worksheets(myWS).Range(myData(i)).Value
Next
開いたブック.Close SaveChanges:=False
End Sub

試す場合はコピーを取ってね
意味がわからなければ無視してね
    • good
    • 0
この回答へのお礼

上記の件、ありがとうございました。
VBAに関して良く分からなくてすいません。
ALT+F11をして貼り付け・・・みたいなことをすると
思うのですが、分からなくてすいません。

やり方としては、申請書のワークシートを
一覧表のワークシートへ移して、=indirect()を使うようにして、
対応することにしました。
色々とありがとうございました。

お礼日時:2009/04/14 22:38

完全な処理をしようとすると、VBAを使わないとできないように思いますが、


ある程度であれば関数でもできると思います。

INDIRECT関数は対象のファイルを開いていないと無理なので、
='C:\[申請書.xls]Sheet1'!$C$3
のように直接参照すればファイルが閉じていても値が表示されるはずです。
毎回決まったフォルダで同じファイル名であれば、一度数式を入力しておくと大丈夫だと思いますが、そうでなければ

="=["&A1&"]"&B1&"!$C$3"
上記の式をD1に入力し、それをE1セルへ値コピー後、F2キー、Enterキーとすれば大丈夫かと思います。
これは数が多いと大変ですが、毎日ファイル名などが変わる場合はVBAを使った方が楽です。


>また欲を言うと、一覧表から申請書をクリックで開けるようにできたら良いと
>思っています。
こちらについては、ハイパーリンクで対応ができると思います。
=HYPERLINK("C:\申請書.xls")
などとすればクリックしてファイルが開きます。


私であれば、VBAで対象フォルダのファイルをファイル名やフォルダ名や更新日などで全て検索し、
対象ファイルを順次開いて必要な値をコピーしてファイルを閉じます。
ただ、今回は申請書の形式が同じという事なのでそこまでしなくても大丈夫でしょうし、
VBAの指定が無いので詳細は割愛します。

この回答への補足

abe_oneselさん
早速のご回答、ありがとうございます。
詳細は、じっくりやってみますが、

下記の、
>="=["&A1&"]"&B1&"!$C$3"
>上記の式をD1に入力し、それをE1セルへ値コピー後、F2キー、Enterキー
>とすれば大丈夫かと思います。
を試してみたのですが、上記をそのまま入れると、
そのまま=[申請書一覧表.xls]Sheet1!$C$3とそのまま表示されるだけで、
申請書から引っぱって来ません。

VBAで実現できるのであれば、そうしたいですが、
知識が無いので、全然分かりません。
色々やって、また分からなかったらまた質問させて頂きます。

補足日時:2009/04/12 22:59
    • good
    • 0
この回答へのお礼

上記の件、ありがとうございました。
やり方としては、申請書のワークシートを
一覧表のワークシートへ移して、=indirect()を使うようにして、
対応することにしました。

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

お礼日時:2009/04/14 22:36

このQ&Aに関連する人気のQ&A

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

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

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

Q複数の同じフォーマットのファイルを新しいブックで一つのシートにまとめる方法

仕事で、各部署から送られてきた、同じフォーマットのファイル(シート1にのみデータ有)が50個近くあります。
それを新しいブックで一つのシートにまとめなくてはいけません。
地道にコピペするのは時間がかかるのでマクロで処理を行いたいと思います。
マクロでの処理方法ご存知の方、処理方法の載っているサイトをご存知の方、もしくはマクロより簡単な方法がありましたら教えてください。

あと、逆に一つのシートをいくつかのファイルに振り分けていく方法もご存知でしたら教えて下さい。
よろしくお願いします。

Aベストアンサー

すみません。質問を勘違いしていました。
>新しいブックで一つのシートにまとめなくてはいけません
でしたね。
Sub Sample1()
Dim buf As String, i As Long
Dim j
buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls")
Do While buf <> ""
Workbooks.Open Worksheets("Sheet1").Range("A1").Value & "\" & buf
Sheets("Sheet1").Range("A1:J1000").Copy
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Workbooks(buf).Activate
Application.CutCopyMode = False
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop
End Sub
で試してみてください。使い方などは
http://oshiete1.goo.ne.jp/qa4225063.html
を参照してみてください。同じ質問があったので気がつきました。

すみません。質問を勘違いしていました。
>新しいブックで一つのシートにまとめなくてはいけません
でしたね。
Sub Sample1()
Dim buf As String, i As Long
Dim j
buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls")
Do While buf <> ""
Workbooks.Open Worksheets("Sheet1").Range("A1").Value & "\" & buf
Sheets("Sheet1").Range("A1:J1000").Copy
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Workbooks(buf).Activate
Application.CutCop...続きを読む

QExcel帳票からExcel一覧を作成するマクロ

一定のエクセル帳票があります。
それぞれのセルに項目があり、

納品書
A列 B列
1 納品日 2013/5/10
2 品目 カップラーメン
3 価格 128円
4 数量 1,000個
5 合計 128,000
6 賞味期限 2014/4/1

など・・・
これが1枚のExcel帳票として複数枚あるとします。
Excelを開くたびにマクロを実行し、一覧表を作成します。

納品日 品目 価格 数量 合計 賞味期限
xxxxx xxxx xxxxx xxxx xxxx xxxxxxx
yyyy yyyy yyyy yyy yyyy yyyyyyy

帳票を読み込んで自動的にこの一覧Excelを作るようにしたいのですが、
どのようにしたらよいのか、マクロ初心者のため全くわからなく困っています。
この一覧をDBと見立ててSQLで書き込んでいけばよいと感じているのですが、
これもどうすればいいか、途方に暮れています。

わかる人であれば、1時間もあればできるものだと思うのですが、
なかなか手を付けられず悩んでいます。

簡単に手ほどき、サンプルなどを教えていただけると嬉しいです。

よろしくお願いします。

一定のエクセル帳票があります。
それぞれのセルに項目があり、

納品書
A列 B列
1 納品日 2013/5/10
2 品目 カップラーメン
3 価格 128円
4 数量 1,000個
5 合計 128,000
6 賞味期限 2014/4/1

など・・・
これが1枚のExcel帳票として複数枚あるとします。
Excelを開くたびにマクロを実行し、一覧表を作成します。

納品日 品目 価格 数量 合計 賞味期限
xxxxx xxxx xxxxx xxxx xxxx xxxxxxx
yyyy yyyy yyyy yyy yyyy yyyyyyy

帳票を読み込んで自動的にこの一覧Excelを作...続きを読む

Aベストアンサー

>Excelを開くたびにマクロを実行し、一覧表を作成します。

それがヤリタイ事なのでしたら、次の2つをとっかかりにします。
1)Auto_Openマクロ、若しくはWorkbook_Openイベントプロシジャを使い、ブックを開いたときに自動起動させる
2)「既に収集済み」の伝票シートと「未収集シート(前回ブックを開いたのちに新たに追加した伝票シート)」を区別する方策を考える


準備:
伝票シートを束ね、さらに一枚「一覧表」シートを添えた一冊のブックを準備する

手順:
ALT+F11を押す
挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub Auto_Open()
 dim w as worksheet

 for each w in worksheets
  if w.name <> "一覧表" then
  if w.range("A10") <> "済" then
   worksheets("一覧表").range("A65536").end(xlup).offset(1).resize(1, 6).value _
    = application.transpose(w.range("B1:B6").value)
   w.range("A10") = "済"
  end if
  end if
 next
end sub

ファイルメニューから終了してエクセルに戻る
ブックを保存し、閉じて、開きなおす


●具体的な転記マクロ、あるいは「記入済み」の識別方法などについては、実際のエクセルに一番適した方策をご自分で考えてマクロにしてください。

>Excelを開くたびにマクロを実行し、一覧表を作成します。

それがヤリタイ事なのでしたら、次の2つをとっかかりにします。
1)Auto_Openマクロ、若しくはWorkbook_Openイベントプロシジャを使い、ブックを開いたときに自動起動させる
2)「既に収集済み」の伝票シートと「未収集シート(前回ブックを開いたのちに新たに追加した伝票シート)」を区別する方策を考える


準備:
伝票シートを束ね、さらに一枚「一覧表」シートを添えた一冊のブックを準備する

手順:
ALT+F11を押す
挿入メニューから標...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む


人気Q&Aランキング