親子におすすめの新型プラネタリウムとは?

Excel 2003を利用している初心者です。
質問させていただきます。

エクセルのシートのデータを別のエクセルに自動で書き込んでくれるような仕組み(マクロ?)の作成方法を教えてください。

具体的には、
A.xls内の
----------------------------------------------------------------
名前       住所     電話番号    登録日
山田太一    東京都豊島区  0309990999   2005/11/01
宮田太一    東京都港南区  0309990999   2005/11/01
・          ・      ・      ・ 
・          ・      ・      ・
----------------------------------------------------------------
のようなのデータを、横列単位で
----------------------------------------------------------------
名前:山田太一    登録日2005/11/01
住所:東京都豊島区  電話番号:0309990999  
----------------------------------------------------------------
のように、項目のみを記載してある、B.xlsファイルに、自動で書き込むしたいのですが、その場合、どのような方法があるのでしょうか?

エクセルに関しては、ずぶの素人なので、どのような方法があるかもわからず、漠然と質問してしまいましたが、
何卒よろしくお願いいたします。

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

A 回答 (5件)

多分別ブックに、印刷用のシートを作りたいとか言うことだと思う。


そのためには、他ブックのセルを参照する方法を知れば済むことではないですか。とりあえず、質問者にはマクロなど早すぎます。
持ってくる他ブックのセルに(社員1.xlsブックのSheet1のA1セルの
データをもってきたい場合の例)
=[_社員1.xls]Sheet1!A1
のように書けば
='C:\Documents and Settings\xxxx\My Documents\[_社員1.xls]Sheet1'!A1
のように補正してくれます。
ーーー
さらにこれが実現しても、エクセルVBAを駆使しないと
1個人1シートのような帳票は自動で印刷できません。
多分そういうことがしたいのでしょうが。
もう少しエクセルを勉強して、VBAを勉強すべきと思います。
    • good
    • 9

もちろんマクロを書く手もありますが、やりたいことは別のブックのデータを参照してデータの並びを変えて表示したいということのように受け取れますので一般的にはINDIRECT関数で十分ではないでしょうか。



A.xlsの1行のデータをB.xlsの2行にまたがって表示したいことは分かりましたが、データが複数ある場合のデータ並びはどのようになりますか?
1行目+2行目が山田さんのデータで、3行目+4行目が宮田さんのデータですか? それが分からないと具体的な式は書けません。
    • good
    • 12

質問とは外れますが・・・・


そのように変更して印刷されたいのでしょうか?
そのようなファイルは非常に扱いにくい物になります。
(新しいファイルにとの事ですから元ファイルは残るとは思いますが・・・)
大変失礼ですがExcelに慣れていらっしゃらない方に限ってそのようなファイルを作られます。
見る時も2段になっていると、どちらかというとわかりにくいです。
用紙設定をA4横置きにするなど工夫して現状の物を印刷されてはいかがでしょうか?
    • good
    • 3

マクロはかけますか?


ワークブックを開くには

Workbooks.Open Filename := "C:\B.xls"

とします。開いてしまえば、後は

Workbooks("B.xls").Sheets(1).Cells(1, 1) = "なんとか"

という具合に、ワークブックに値を書き込むことができます。
フォーマット変換に関しては、ループを組むなどして、実現します。
最後に、保存して閉じます。

Workbooks("B.xls").Save
Workbooks("B.xls").Close

マクロが組めるのであれば、それほど難しいことではないですが、マクロを組めないのであれば、実現は困難ではないかと思います。
    • good
    • 3

VBAを使えば、出来ますね。


コードを書くのは面倒なので割愛しますが、順序としては
1.エクセルBを開く
2.エクセルAを行に合わせてループ(繰り返す)させる
3.セルのデータに"名前:"などをつけてエクセルBの行に貼り付ける。
です。

Workbooks.Open "C:\BookB.xls"

でエクセルを開けます(ファイルが無い場合はエラー)。
for i=0 To 1000(最大件数以上にすればいい)
Application.Workbooks("BookB.xls").Worksheets("sheet1").Cells(i,1).Value="名前:" + Application.Workbooks("BookA.xls").Worksheets("sheet1").Cells(i,1).Value
Next i
みたいな感じでいけると思います。
    • good
    • 4
この回答へのお礼

ありがとうございます。
皆様ご指摘のとおりVBAをもう少し学んでから、でなおします。

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

お礼日時:2006/12/08 12:17

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

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複数のエクセルファイルからデータ抽出とまとめる方法について。

500のエクセルファイルがあり、それぞれのエクセルデータのA2からF2までのデータのをまとめた一覧表(1行目は、1枚目のエクセルファイルのA2-F2、2行目は2枚目のエクセルファイルの・・・、という感じでです)のを、新しいエクセルファイルもしくはテキストなどにでも手早く作れる方法をご存知の方、ご教授ください。コピペでやっていますが嫌になってしまいました。。マクロも触っては見たのですが、2枚目のエクセルファイルを2行目に、3枚目のエクセルファイルを3行目になどの方法の解決は思いつかず、挫折しました。よろしくお願いいたします

Aベストアンサー

対象のフォルダをcドライブの「sample」とした場合で回答します。
新規エクセルブックのシート名タブを右クリックし「コードの表示」
右側のエディタエリアに下記コードを貼り付け、実行して下さい。
G列にファイル名が入るようになっています。不要であれば
Cells(rIdx, 7).Value = fName
を削除して下さい。


Sub getA_F()
Const myPath As String = "c:\sample\"
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open Filename:=myPath & fName
rIdx = rIdx + 1
Me.Range(Cells(rIdx, 1), Cells(rIdx, 6)).Value = ActiveSheet.Range("A2:F2").Value
Cells(rIdx, 7).Value = fName
Windows(fName).Close
fName = Dir
Loop
End Sub

対象のフォルダをcドライブの「sample」とした場合で回答します。
新規エクセルブックのシート名タブを右クリックし「コードの表示」
右側のエディタエリアに下記コードを貼り付け、実行して下さい。
G列にファイル名が入るようになっています。不要であれば
Cells(rIdx, 7).Value = fName
を削除して下さい。


Sub getA_F()
Const myPath As String = "c:\sample\"
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open ...続きを読む

QExcelでファイルを越えて連携できるのでしょうか

Excel2010なのですが、同じファイルであればシートをまたいであるセルを参照出来ますが、
別ファイルの、あるシートのあるセルを参照するというような事は出来ないのでしょうか?
ほんの初歩的なマクロは学んだのですが、そういうファイルをまたいでの設定は無かったように思いますが、マクロとか使えば出来るのでしょうか?
例えばプログラミングなどであるinclude()などあればファイルを参照出来るのでしょうが。

Aベストアンサー

エクセルの数式では,
='c\test\[book1.xls]Sheet1'!A1
といった数式で多ブックの値を参照し計算に利用できます

参照元ブックを開いておいて
=[book1.xls]sheet1!A1
のように数式を作成し,参照元ブックを保存して閉じると,自動で閉じたブックを参照する式に書き換わります。エクセルの操作になれていないときは,こちらの手順を行った方が間違いがありません。




マクロでは別のブックを「開いて参照する」のが原則です。
sub macro1()
 dim w as workbook
 set w = workbooks.open("c:\test\book1.xls")
 msgbox w.worksheets("シート名").range("セル番地")
 w.close false
end sub


開きたくないご相談はしばしば見かけますが,労多くして功少ないの典型と言えます。

方法1:開いているところを見せない
sub macro2()
 dim w as workbook
 dim x
 application.screenupdating = false
 application.calculation = xlcalculationmanual
 set w = workbooks.open("c:\test\book1.xls")
 x = w.worksheets("Sheet1").range("A1")
 w.close false
 application.calculation = xlcalculationautomatic
 application.screenupdating = true
 msgbox x
end sub

方法2:エクセルに閉じたブックの値を取ってこさせる
sub macro3()
 dim x
 range("A1").formula = "='C\test\[book1.xls]Sheet1'!A1"
 x = range("A1").value
 range("A1").clearcontents
 msgbox x
end sub

方法3:4.0マクロ関数を使う
色々制約があるのでお薦めしませんが,下記など参考に。
http://www.moug.net/tech/exvba/0060037.html

エクセルの数式では,
='c\test\[book1.xls]Sheet1'!A1
といった数式で多ブックの値を参照し計算に利用できます

参照元ブックを開いておいて
=[book1.xls]sheet1!A1
のように数式を作成し,参照元ブックを保存して閉じると,自動で閉じたブックを参照する式に書き換わります。エクセルの操作になれていないときは,こちらの手順を行った方が間違いがありません。




マクロでは別のブックを「開いて参照する」のが原則です。
sub macro1()
 dim w as workbook
 set w = workbooks.open("c:\test\book1.xls")
...続きを読む

Q『エクセルファイルを別のエクセルファイルに反映』

こんにちは。初心者です。

エクセルファイル「購入品-1.xls」があります。そのファイル内には各業者から購入したリストが複数入力してあります。業者A~業者Zまであるとします。「購入品-1.xls」を更新すると、業者Aのリストだけを、別のエクセルファイル「購入品-2.xls」に反映されるようにしたいのですが、どうすればよろしいでしょうか?

ご回答宜しくお願いします。

「購入品-1.xls」のSheet2のF列が業者を判別する部分で、A列~M列までを「購入品-2.xls」のSteet1に反映したいです。

エクセル2003です。

Aベストアンサー

別ブックのデータを【抽出して】取り出したいということですよね。

[フィルタオプション]とか[マクロ]とか[数式](!)とか
いろいろなアプローチがありますが、
サンプルデータを処理するだけならともかく、
実際に運用するとなると初心者にはハードルが高い面があります。

というわけで、
[データベースクエリ]あるいは[外部データの取り込み]をオススメしておきます。

■Excel(エクセル)基本講座:データベース クエリ(データ抽出)
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter2.htm

■Excel豆知識41:エクセル:外部データの取り込み
 (パラメータークエリの利用):条件によるデータの抽出
http://www11.plala.or.jp/koma_Excel/contents6/mame6041/mame604101.html#TOP

以上ご参考まで。

Qエクセルで別ファイルのデータを読み込み自動入力させたいのですが

【顧客リスト】というファイルのsheet1に、A列を氏名、B列を住所、C列を年齢の欄として複数行入力しています。
【見積書】というファイルのセルE20に氏名を入力すると、【顧客リスト】A列から同じ値の行を探し出し、その同行のB列の値を【見積書】のE21に自動的に入力されるようにしたいと思っています。
どなたかご回答の程、よろしくお願いいたします。

Aベストアンサー

常に、【顧客リスト】と【見積書】の両方のファイルが開いているという条件で、

【見積書】のE21に
=INDEX([顧客リスト.xls]Sheet1!$B$2:$B$*,MATCH(E20,[顧客リスト.xls]Sheet1!$A$2:$A$*,0))
で良いかと。なお式中の"*"には、【顧客リスト】の際下段の行数を入れてください。

解説ですが、
まずMATCH関数で【見積書】セルE20の値が、【顧客リスト】のA列の何行目にあるかを検索し、その値をINDEX関数に入れて、B列の値を表示する方法です。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExcelで入力したデータを他のシートにも反映したいです

Excelでシートに入力したデータだけを他のシートに表示させたいです・・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。

シート1
 Å列    B列 C列    
キャベツ     玉   1
りんご     個   2
オレンジ    個
バナナ     本   10
きゅうり    本
ニラ     Kg  20.5

シート2
 Å列    B列 C列
キャベツ     玉  1
りんご     個  2
バナナ     本  10
ニラ     Kg  20.5

↑のように。シート1に入力したデータを入力した行ごと表示させたいです。

Aベストアンサー

》 なにぶん初心者なもので…

関数を一切使用しない方法(フィルタオプションの設定)をご紹介します。

Sheet1
1   A    B   C
1 品名   単位 数量
2 キャベツ 玉    1
3 りんご  個    2
4 オレンジ 個
5 バナナ  本   10
6 きゅうり 本
7 ニラ   Kg  20.5
8

添付図は[フィルタオプションの設定]を開始する Sheet2 を示しています。
([データ]→[フィルタ]→[フィルタオプションの設定]の手順を実行します)

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング