エクセル初心者です。

エクセル2007で同じワークシート内のデーターを同期させる方法ってあるのでしょうか?
C5セルに数字の5を入力するとC10セルとC20セルも自動的に5と表示させ、C10に数字の3を入力するとC5とC20セルに3を表示みたいな感じです。

私の考えでは同期させたいセルに【=】を打ち込み入力するセルを限定させる方法しか思いつきません。
別のワークシートの同期の方法は調べると出てくるのですが、同じワークシート内の方法がヒットしませんでした。

機械部品の在庫管理表を作成したいです。


分かりにくい説明で申し訳ありません。

A 回答 (4件)

例えばですが



同じワークブック内で
シート1に集計表
シート2に大分類~小分類の各表を作成(同じシートに作っても一緒だけど大きくなるなら見難いのでシートを分けてみる。分類ごとにシートを分割してもよいと思います)

集計表の各項目では、シート2で入力してる同一のものを合算するようにする

集計表の項目A = シート2のA(大分類)+B(中分類)+C1(小分類)+C2(小分類)・・・・ など
単純に分類表の合算式を集計表に入れておくのです。

作るときだけは、多少面倒もありますが、出来てしまえば長く使えるものでしょうから
複雑なVBAマクロを組むよりは、単純な計算式で作ったほうがメンテも楽。
担当者が変わっても、引継ぎも楽だと思われます。

またPCにもよりますが、ハイパーリンクを多用するとけっこう重たいですよ。
会社にあるPCはそんなに性能いいのを置いてることは少ないですから・・・・w
某大手T社では未だにWin98つかってたりすることもあります。

こんな感じでも、質問主様の意図は実現できるのではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にしてみます。

お礼日時:2011/03/28 08:39

同期とは大げさな言い方だ。


関数は引数データだ変更されたとき、即時反応性があるから、関数はすべて同期するといえるのではないか。
同じ値にしたいセル側で=A1のように入れたら仕舞い。
それ以上何を期待するのか?。このやり方はわかっているようだが、そこを書かない質問など、答えようがない。
一番確実で初等的な方法で、これ以外はない(VBAなどややこしく不完全になるだけ。
他人は当たり前に使っていることを、質問者は使わなかったから、新しく感じているだけでは。

この回答への補足

ありがとうございます。
大げさでしたか、すみません。
やはり単純なほうが良いのですかね。

機械の在庫管理表を作成していて大分類、中分類、小分類に分かれています。
例えばです。大分類を1号建屋や2号建屋・中分類を1階設備や2階設備・小分類をモーターやシリンダーとして、小分類の下にボルトパッキン、ベアリング類の部品があり在庫管理したいと思ってます。
モーターなど種類が違ってもベアリングなどは同じ物を使用している場合があります。
1号建屋の1階にあるモーターを整備した時にそのモーターで使用した部品の在庫を減らした時、2号建屋の2階にあるモーターの同じ部品も一緒に減るようにしたいと思っています。

小分類だけで1000を超えてますので入力するセルを1つだけでは面倒な気がしまして質問しました。

いい方法が無ければ、同じ部品をハイパーリンクで他のワークシートに飛ぶようにして管理しようと思います。

補足日時:2011/03/25 13:36
    • good
    • 0

1セルに関数とデータ入力を併せもつ事は不可能です。


このような振舞にしたい場合、マクロ(VBA)を使用する事になります。
後は、自動ではありませんが同期させていセルを選択してどれかのセルに入力完了時にctrl+enterキーを同時押下すれば可能ですが如何でしょうか。

この回答への補足

ありがとうございます。
数が多いので、なるべくは自動でやりたいと思っています。

機械の在庫管理表を作成していて大分類、中分類、小分類に分かれています。
例えばです。大分類を1号建屋や2号建屋・中分類を1階設備や2階設備・小分類をモーターやシリンダーとして、小分類の下にボルトパッキン、ベアリング類の部品があり在庫管理したいと思ってます。
モーターなど種類が違ってもベアリングなどは同じ物を使用している場合があります。
1号建屋の1階にあるモーターを整備した時にそのモーターで使用した部品の在庫を減らした時、2号建屋の2階にあるモーターの同じ部品も一緒に減るようにしたいと思っています。

小分類だけで1000を超えてますので入力するセルを1つだけでは面倒な気がしまして質問しました。

いい方法が無ければ、同じ部品をハイパーリンクで他のワークシートに飛ぶようにして管理しようと思います。

補足日時:2011/03/25 13:33
    • good
    • 0

簡単かつ普通なのは



C5は普通に数字入れる
C10 には =C5
C20 にも =C5

と書いておくことです (つまり、質問主様の言う方法)

その後、自分で数値入れて欲しいセルだけロック解除してシートを保護してあげれば、間違いで式を書き換えられることもないし何も問題はないと思います。というか、他の方法を使わないとならない理由があるんでしょうか?

できるだけ単純に作ったほうがページも軽いのでそのほうがいいと思いますよ。
これで不都合があるなら、また考えましょう

この回答への補足

ありがとうございます。

機械の在庫管理表を作成していて大分類、中分類、小分類に分かれています。
例えばです。大分類を1号建屋や2号建屋・中分類を1階設備や2階設備・小分類をモーターやシリンダーとして、小分類の下にボルトパッキン、ベアリング類の部品があり在庫管理したいと思ってます。
モーターなど種類が違ってもベアリングなどは同じ物を使用している場合があります。
1号建屋の1階にあるモーターを整備した時にそのモーターで使用した部品の在庫を減らした時、2号建屋の2階にあるモーターの同じ部品も一緒に減るようにしたいと思っています。

小分類だけで1000を超えてますので入力するセルを1つだけでは面倒な気がしまして質問しました。

いい方法が無ければ、同じ部品をハイパーリンクで他のワークシートに飛ぶようにして管理しようと思います。

補足日時:2011/03/25 13:32
    • good
    • 2

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

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

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

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

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

Qエクセルで同じシート内でデーター検索方法

エクセルで同じシート内でデーター検索方法

A1のセルからA1、A2、A3・・・と縦にに100以上のデータがあります。
B1にも同様にデーターがあります。
ある文字列の組み合わせが重複しているもののみを検索したいです。

検索結果として一番望ましいのは、別のセルに抽出ですが、対象となったセルに色づけでも良いです。

文字で表すのは難しいので、添付画像のようにしたいです。
説明下手でわかり難いかもしれませんがすみません。

Excel2000です
WinXP HomeedtionSP3

Aベストアンサー

D1=IF(ROW(A1)>COUNT(INDEX(0/(COUNTIF($B$1:$B$100,"*"&$A$1:$A$100&"*")*($A$1:$A$100<>"")),)),"",INDEX($A$1:$A$100,SMALL(INDEX((COUNTIF($B$1:$B$100,"*"&$A$1:$A$100&"*")=0)*10^5+ROW($A$1:$A$100),),ROW(A1))))
★下にコピー

E1=IF($D1="","",IF(COLUMN(A1)>COUNTIF($B$1:$B$100,"*"&$D1&"*"),"",INDEX($B$1:$B$100,SMALL(INDEX(ISERROR(FIND(D1,$B$1:$B$100))*10^5+ROW($B$1:$B$100),),COLUMN(A1)))))
★右と下にコピー

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Qエクセル:ワークシートを自動で生成&ワークシート名を自動で割り振り

こんにちは はじめまして

エクセルのワークシートを自動で生成するやり方を教えていただけますでしょうか。

やりたいことは以下の通りです。

何件かお店がありまして、毎日の売り上げ報告がファックスで本部に送られてきます。
そのファックスを見ながら、本部ではエクセルに入力し合計と累計を出すようにしています。

今現在は雛形ワークシートを一つ作り、手動でワークシートを30,31日分をコピーし、ブックには「店舗A2006年3月度分.xls」というようなブック名で保存してあります。
うちの会社は10日締めなので、3月で言うと、20060311から20060410(←数字は西暦)までのワークシートを作ります。

ワークシートのイメージとしてはこんな感じです。↓

シート名:店舗A.xls
ワークシート名:「雛形」
----------------------------
当日の日付
商品A 単価 ○個 小計
商品B 単価 ○個 小計
    ・
    ・ 
         当日の合計
----------------------------

そしてこれの「雛形」を、自動で一か月分ワークシートをコピーするようにしたいのです。(今は手動でやってます)
VBAの本を読んで、For~Next分を使うと、指定した枚数コピーできることはわかったのですが、ご承知の通り30日の月もあれば31日の月もありまして、これを計算で自動に判断するようにできないでしょうか?

欲を言えば、さらにそのワークシート名も自動で「A店舗20060311」というように日付ごとのワークシート名を入れられるようになると助かります。

もっと欲を言えば、各ワークシートの特定のセルに当日の日付を入れてるのですが(セル番地はどこでもいいです)、そこの日付も、ワークシート名と連動して自動で入れられると助かります。

長文になってしまいましたが、どなたか教えていただけると助かります。

よろしくお願いいたします。

こんにちは はじめまして

エクセルのワークシートを自動で生成するやり方を教えていただけますでしょうか。

やりたいことは以下の通りです。

何件かお店がありまして、毎日の売り上げ報告がファックスで本部に送られてきます。
そのファックスを見ながら、本部ではエクセルに入力し合計と累計を出すようにしています。

今現在は雛形ワークシートを一つ作り、手動でワークシートを30,31日分をコピーし、ブックには「店舗A2006年3月度分.xls」というようなブック名で保存してあります。
うちの会社は...続きを読む

Aベストアンサー

申し訳ありません。会社で、サンプルを作成して、帰宅時間になったので、あまり確認せずに、提示してしまいました。
今は、自宅で、再度確認し、修正版を提示いたします。


Dim tmp_dat5 As Date
Dim tmp_dat6 As Integer
Dim cnt As Integer
Dim max As Integer
Dim nen As Integer
Dim getu As Integer
Dim sname As String
Dim tmp_day As String
Dim tmp_getu As String
Dim shop As String
nen = Sheets("Work").Range("A1").Value
getu = Sheets("Work").Range("B1").Value
If getu = 12 Then
nen = nen + 1
getu = 1
Else
getu = getu + 1
End If
tmp_dat5 = DateValue(nen & "/" & getu & "/01")
tmp_dat5 = tmp_dat5 - 1
tmp_dat6 = Day(tmp_dat5)
shop = Sheets("Work").Range("A2").Value
nen = Sheets("Work").Range("A1").Value
getu = Sheets("Work").Range("B1").Value
tmp_getu = Right("0" & getu, 2)
For cnt = 11 To tmp_dat6
tmp_day = Right("0" & cnt, 2)
sname = shop & nen & tmp_getu & tmp_day
Sheets("雛形").Select
Sheets("雛形").Copy Before:=Sheets("雛形")
ActiveSheet.Name = sname
Sheets(sname).Range("L1").Value = nen & "/" & tmp_getu & "/" & tmp_day
Next cnt
nen = Sheets("Work").Range("A1").Value
getu = Sheets("Work").Range("B1").Value
If getu = 12 Then
nen = nen + 1
getu = 1
Else
getu = getu + 1
End If
tmp_getu = Right("0" & getu, 2)
For cnt = 1 To 10
tmp_day = Right("0" & cnt, 2)
sname = shop & nen & tmp_getu & tmp_day
Sheets("雛形").Select
Sheets("雛形").Copy Before:=Sheets("雛形")
ActiveSheet.Name = sname
Sheets(sname).Range("L1").Value = nen & "/" & tmp_getu & "/" & tmp_day
Next cnt

申し訳ありません。会社で、サンプルを作成して、帰宅時間になったので、あまり確認せずに、提示してしまいました。
今は、自宅で、再度確認し、修正版を提示いたします。


Dim tmp_dat5 As Date
Dim tmp_dat6 As Integer
Dim cnt As Integer
Dim max As Integer
Dim nen As Integer
Dim getu As Integer
Dim sname As String
Dim tmp_day As String
Dim tmp_getu As String
Dim shop As String
nen = Sheets("Work").Range("A1").Value
getu = Sheets("Work").Range("B1").Value
If getu = 12 T...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

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

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

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

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

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

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

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QエクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列

エクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列目(A列)の日付を一致させて1つのワークシートに纏める方法を探しています。

2つの時系列データがあるのですが、データA(為替データ)とデータB(株式データ)のデータ管理方法が下記のように異なっています。

データA(為替データ)・・・1週間のうち6日間(月曜から土曜まで)
データB(株式データ)・・・1週間のうち5日間(月曜から金曜まで)

おのおのワークシートのA列に日付が入っています。

データAは月曜から土曜までなので、1週間に6行要します。データBは月曜から金曜なので1週間に要するのは5行です。従って、単純にこの2つのデータを張り合わせるだけでは(データBをデータAのシートに張り合わせた時)、1週間に要する行数が違うので1行ずつずれてしまいます。

1週間に要する行数の違いだけでなく、マーケットが休みの日はデータそのものがないため日付が存在しません。(マーケットの休みもおのおの別の日でバラバラです。)

これらの理由により、ただ単に張り合わせるだけだとずれが広がるばかりです。

そこでデータAの日付とデータBの日付を認識して一致させる関数を教えて欲しいと思います。

データAの構成はA1=日付、B1=始値、C1=高値、D1=安値、E1=終値で、データBの構成も同じです。
データAのF1にデータAのA1と同じ日付のデータBの行を貼り付るように設定したいと思っています。

説明が分かり辛い場合は補足しますので、その際はご指摘下さい。

宜しくお願いします。

エクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列目(A列)の日付を一致させて1つのワークシートに纏める方法を探しています。

2つの時系列データがあるのですが、データA(為替データ)とデータB(株式データ)のデータ管理方法が下記のように異なっています。

データA(為替データ)・・・1週間のうち6日間(月曜から土曜まで)
データB(株式データ)・・・1週間のうち5日間(月曜から金曜まで)

おのおのワークシートのA列に日付が入っています。

データAは月曜から土曜までなので、1...続きを読む

Aベストアンサー

誤記がありましたね。ごめんなさい。

シートCのA2に
2010/1/1
を置いて下向けにえいやっとオートフィルドラッグ,365日の日付を並べておいて
B2:為替
=IF(COUNTIF(為替!$A:$A,$A2),VLOOKUP($A2,為替!$A:$E,COLUMN(B2)),"")
を右に下にコピー。
F2:株式
=IF(COUNTIF(株式!$A:$A,$A2),VLOOKUP($A2,株式!$A:$E,COLUMN(B2)),"")
を右に下にコピー。

これでマーケットの開いてなかった日付がエラーになることもありませんので,追加のご質問も解消でしょうか。

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Q【VBA初心者】同じフォルダ内のcsvファイルを1つのシートに縦に並べる

エクセルVBAで、同じフォルダ内にある複数のcsvファイルの文字を
別のエクセルファイルに縦に並べて転記したいです。

非常によく似た質問があったのですが(以下URL)、こちらは2つめ以降に読み取られたcsvファイルの1行目を削除(か、そもそも読み取っていないのか、、)するような指示になっています。
http://oshiete.goo.ne.jp/qa/4884584.html


以下マクロを作動させた際にcsvの1行目の情報もすべて記載させるようにするためには、
どこをどのように修正すればよいか教えて頂きたいです。

マクロの知識は無いに等しいので、コードをそのまま記載頂きたいです。
申し訳ありませんが何卒よろしくお願いいたします。

-----------------------------------------------------------------
Private Sub try()
Dim ws As Worksheet
Dim fd As String
Dim fn As String
Dim ret As String
Dim i As Long
Dim n As Long
Dim x As Long
Dim s As Long

fd = ThisWorkbook.Path & "\"
'fd = FDSELECT 'フォルダ選択の場合

If Len(fd) = 0& Then Exit Sub
Application.ScreenUpdating = False
'ActiveWorkbookにシートを追加して処理
Set ws = Sheets.Add
On Error GoTo errHndler
fn = Dir(fd & "*.csv")

x = 1
s = 1
Do Until Len(fn) = 0&
i = i + 1
'データCountにより次のセット先変更
n = n + x
'外部データ取り込み
x = CSVQRY(ws, fd & fn, ws.Cells(n, 2), s)
If x < 0 Then
Err.Raise Number:=1000, Description:="CSV読み込みに失敗"
ElseIf (n + x) >= Rows.Count Then
'行数overしてもエラーかからないため取り込み直し
ws.Rows(n).Resize(x).Delete
Set ws = Sheets.Add
n = 1
x = CSVQRY(ws, fd & fn, ws.Cells(n, 2), 1&)
End If
'ファイル名をA列にセット
ws.Cells(n, 1).Resize(x).Value = fn
s = 2
fn = Dir()
Loop

If i > 0 Then
ret = i & "files.done"
Else
ret = "no file"
End If

errHndler:
If Err.Number <> 0 Then
ret = Err.Number & vbTab & Err.Description
Debug.Print ret
End If
Application.ScreenUpdating = True
MsgBox ret
Set ws = Nothing
End Sub
'---------------------------------------------------------------------
Private Function CSVQRY(ByRef ws As Worksheet, _
ByRef fs As String, _
ByRef rs As Range, _
ByVal sr As Long) As Long
Dim cnt As Long

On Error GoTo errChk
With ws.QueryTables.Add(Connection:="TEXT;" & fs, _
Destination:=rs)
.AdjustColumnWidth = False
.TextFilePlatform = xlWindows
.TextFileStartRow = sr
.TextFileCommaDelimiter = True
.Refresh False
cnt = .ResultRange.Rows.Count
.Parent.Names(.Name).Delete
.Delete
End With
CSVQRY = cnt
Exit Function
errChk:
CSVQRY = -1
End Function
'---------------------------------------------------------------------
Private Function FDSELECT() As String 'フォルダ選択Function
Dim obj As Object
Dim ret As String

Set obj = CreateObject("Shell.Application") _
.BrowseForFolder(0, "SelectFolder", 0)
If obj Is Nothing Then Exit Function
On Error Resume Next
ret = obj.self.Path & "\"
If Err.Number <> 0 Then
ret = obj.Items.Item.Path & "\"
Err.Clear
End If
On Error GoTo 0
Set obj = Nothing
FDSELECT = ret
End Function

エクセルVBAで、同じフォルダ内にある複数のcsvファイルの文字を
別のエクセルファイルに縦に並べて転記したいです。

非常によく似た質問があったのですが(以下URL)、こちらは2つめ以降に読み取られたcsvファイルの1行目を削除(か、そもそも読み取っていないのか、、)するような指示になっています。
http://oshiete.goo.ne.jp/qa/4884584.html


以下マクロを作動させた際にcsvの1行目の情報もすべて記載させるようにするためには、
どこをどのように修正すればよいか教えて頂きたいです。

マク...続きを読む

Aベストアンサー

> s = 2

ここをコメントにして、どうなりますか


人気Q&Aランキング

おすすめ情報