【先着1,000名様!】1,000円分をプレゼント!

エクセル2010で、専用フォルダーに入っている複数のエクセルファイルの特定のセル(A1,B2,C3等)を別のブック(まとめ)に行方向に転記したいのですが。
まとめ用のシートの上の行から順に各シートのセル内容を転記していきたいのですが何か方法がありませんでしょうか?

例えば各ファイルに住所、TEL No、名前、その他の情報が、決まった書式のシートに入っていて、このシートが毎月新規データとして追加されるのですが、別のエクセルシートに必要な項目のみ転記して、一覧表を作成したいのです。

現在は、1つずつファイルを開いて、目的のセルのコピペでまとめのシートに貼り付けて作業していますので、これより少しでも簡単な方法があれば教えてください。

質問者からの補足コメント

  • ご丁寧な解説ありがとうございます。

    試行錯誤でがんばってはいるのですが、知識不足はいかんとも・・・
    何処の参照がどこに転記されるのかが今一合わせられません。
    また、ファイル名が縦に3個づつ表示されたり、目的のA列の1つのセルのした空白行が入って次のファイルのA列の値が転記されたりしています。

    但し、一応自動で各ファイルの特定セルが意図しない場所に転記されるようになったので後一歩?だと思うのですが、当方にはやはりハードルが高いと思います。

    誠に申し訳ないのですが、下記のようなことがしたいので具体的なコードを教えて頂きたいのですが。

    ファイルは月ごと/担当者ごとに決まったフォルダーに”HH ・・・”で保存されています。

    「複数のエクセルシートの特定セルを別のブッ」の補足画像1
    No.3の回答に寄せられた補足コメントです。 補足日時:2018/01/29 10:27
  • 説明がへたくそで、何度も申し訳ありません。
    内容は実務と違うように変更してありますが、左の書式Ⅰような表(活動報告書)に入力されています。
    この表の中から必要な項目だけをⅡの活動結果一覧に抜粋したいのですが。
    このような表が週に数枚フォルダーに入ってきて、期末、年末に集計しています。

    「複数のエクセルシートの特定セルを別のブッ」の補足画像2
    No.4の回答に寄せられた補足コメントです。 補足日時:2018/01/30 08:41

A 回答 (5件)

難しいコードではありませんが、根気のいるコードになります。


GYOU1 = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
で、左の書式Ⅰような表(活動報告書)のデータの行数
GYOU2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
で、活動結果一覧の最後の行番号を計算しています。

今回の場合
一枚のシートに、データが一行ですよね。
Workbooks.Open ThisWorkbook.Path & "\" & Buf
GYOU2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & GYOU2).Value = Sheets("Sheet1").Range("A2”).Value
.Range("B" & GYOU2).Value = Sheets("Sheet1").Range("B2”).Value
.Range("C" & GYOU2).Value = Sheets("Sheet1").Range("C2”).Value
・・・・
とデータが入力されているセルを個々に指定します。

さて、既に手遅れですが、
配布する活動報告書の方にひと工夫しておくと、集計の際のVBAで楽できるよう方法があります。
例えば、一行目に、関数を入れておきます。
集計のデータと同じように一行になる様に
A1 =A2
B1 =B2
C1 =C2
・・・・
そして、その1行目を非表示にしておきます。
集計する際、VBAでは
Workbooks.Open ThisWorkbook.Path & "\" & Buf
GYOU2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & GYOU2 & ":E" & GYOU2 ).Value = Sheets("Sheet1").Range("A1:E1”).Value
で済みます。
アンケートの集計
https://ameblo.jp/hokora2016/entry-12328732608.h …
が参考になるかもしれませんが
・集計用の行を準備したファイルを配布する。
・OutLookの受信フォルダから添付ファイルを自動保存する。
・保存したファイルの1行目だけを集計ファイルに追記していくマクロ
・不要となったファイルを削除するマクロ
ここまで出来れば、仕事が ボタンワンクリックになりますね。
    • good
    • 0
この回答へのお礼

ご丁寧な回答に感謝です!!

今日手の空いた時に何度か試行してみたのですがまだうまく動きませんが、落ち着いてやれば何とかなりそうです。(基本的にコピぺで出来るようにしてもらっているので)

ちなみに書式は別部署の管理しているファイルなのでいじれません。 これがネックでもあるのですが。

これに類似した作業はほかのファイルでもあるのでこれを見本に勉強して使えるようになります。
当方の質問の不備にも拘わらず何度も丁寧な対応に本当に感謝いたします。

今後もよろしくお願いします。

お礼日時:2018/01/31 21:18

う~ん、添付のエクセルをみても??


どちらが
・各ファイルに住所、TEL No、名前、その他の情報
・別のブック(まとめ)
差し支えなけば
希望のシートの業況を張り付けてみて下さい。
この回答への補足あり
    • good
    • 0

.Range("A" & Rows.Count).End(xlUp).Row


については、
https://ameblo.jp/hokora2016/entry-12317456227.h …
で紹介しています。
この回答への補足あり
    • good
    • 0

>2つ目、3つ目のファイルを順番に開くたびに同じ行に上書きされてしまい


多分ですが
GYOU2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
で、Aのデータが入力されている最後の行番号を探しています。
A列にデータが入っていますでしょうか。
検索する列を B列、或いはC列にしてみては如何でしょうか。
    • good
    • 0

ボタンをワンクリックするだけに出来ますが


VBAの力を借りる事になります。
https://ameblo.jp/hokora2016/entry-12319754037.h …
エクセルVBAで複数のファイルのデータをまとめる。
こんな感じの事ですが大丈夫ですか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

先ずはお礼と、申し訳ありませんが出来ればもう少し教えてください。
ご推察の通り、VBA初心者でこれが正常に動くまでに相当時間がかることが予想されますが、とりあえず試行錯誤してみた結果、やっと動くようにはなったのですが、やはりだめでした。

具体的には、3つのファイルで試行したのですが、1つ目のファイルの指定の行を参照してくるのですが、2つ目、3つ目のファイルを順番に開くたびに同じ行に上書きされてしまい、結果としては最後のファイルの参照結果だけが残るのですが。
上書きではなく、最下行への追加にするにはどこを修正すればよいのでしょう?

お手数をおかけしますが宜しくお願いします。

Sub ボタン1_Click()

Dim Buf As String
Dim GYOU1 As Long
Dim GYOU2 As Long
Buf = Dir(ThisWorkbook.Path & "\HH*.xlsx")
With ThisWorkbook.Sheets("Sheet1")
Do While Buf <> ""
Workbooks.Open ThisWorkbook.Path & "\" & Buf
GYOU1 = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
GYOU2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & GYOU2 & ":E" & GYOU2 + GYOU1 - 2).Value = Sheets("Sheet1").Range("A2:E" & GYOU1).Value
.Range("F" & GYOU2 & ":F" & GYOU2 + GYOU1 - 2).Value = Buf
ActiveWorkbook.Close SaveChanges:=False
Buf = Dir()
Loop
End With

End Sub

お礼日時:2018/01/26 13:30

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

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

Q複数シートの同じセル内容を1シートに順番に貼り付けたい

複数あるシートの同じ番地のセルをコピーして、1シートの一覧にしたいと思っています。簡単な方法があったら教えてください。

Aベストアンサー

次のようにしてはどうでしょう。
あるシートのA2セルから下方に例えばSheet1,Sheet2などとシート名を入力します。
B1セルには表示したいセル番地を例えばA1のように入力します。他にも表示させたい場合にはC1セルにセル番地を入力します。
そこでB2セルには次の式を入力し右方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
=IF(OR($A2="",B$1=""),"",INDIRECT($A2&"!"&B$1))

Q複数エクセルから特定シートの特定行だけを別シートに抽出するマクロ

エクセルブックが160ほどあります。
それらは全て同じ作りで、シートが2つづつ存在しています。
その2シート目(シート名”集約”シート)にある特定のセル(A2からT2)だけを
別のエクセルに集めて一覧にしたいです。

色々とやってみてネット検索もしてみたのですが、うまくいかないので
どなたか教えていただけませんでしょうか。

Aベストアンサー

こんな感じで、どうでしょう。
MyPathで指定したフォルダ内の .xlsx ファイルを対象に一覧化します。
一覧は、A列にファイル名、B列以降に各ブック中の”集約”シートのA2~T2が表示されます。
ただし、”集約”シートが無い場合は、ちょっとおかしな動作をします。おかしな動作については、お楽しみ!!(元のファイルが壊れることは無いので、安心して実行してみて下さい)

Sub sample()
Dim MyPath As String
Dim MyFile As String
Dim I As Long
MyPath = "C:\教えてGoo\"
MyFile = "*.xlsx"
MyFile = Dir(MyPath & MyFile)
Do While MyFile <> ""
I = I + 1
Cells(I, "A") = MyFile
Range(Cells(I, "B"), Cells(I, "U")).Formula = "='" & MyPath & "[" & MyFile & "]Sheet1'!A2"
MyFile = Dir
Loop
End Sub

こんな感じで、どうでしょう。
MyPathで指定したフォルダ内の .xlsx ファイルを対象に一覧化します。
一覧は、A列にファイル名、B列以降に各ブック中の”集約”シートのA2~T2が表示されます。
ただし、”集約”シートが無い場合は、ちょっとおかしな動作をします。おかしな動作については、お楽しみ!!(元のファイルが壊れることは無いので、安心して実行してみて下さい)

Sub sample()
Dim MyPath As String
Dim MyFile As String
Dim I As Long
MyPath = "C:\教えてGoo\"
MyFile = "*.xlsx"...続きを読む

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 ...続きを読む

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行までとしていますが、必要に応じて変更して下さい

Q複数のブックからデータを転記するマクロについて

こんにちは。
VBAの素人なのでネットや本などで自分なりに調べましたが、
どうにも解決できないので、ご教示いただけませんでしょうか。

複数のブックにある同一セル番地にある
データを別のブックにまとめたいのですが、
ブック数が500程度あり、マクロでうまくできないか悩んでいます。

 (1)転記元ブックを開く。
 (2)転記元データをコピーする。
 (3)転記先ファイルのセルに貼り付ける。
 (4)転記元ブックを閉じる。
の繰り返しだと思うのですが、(2)ができず困っています。
ちなみに、500のブックとまとめるブックも同じフォルダにあります。

具体的には、転記元ブックは以下のような形で、A列に様々な温度のデータが縦に並んでいます。
   A列  
1行  温度 
2行  27 ←ここのみ抽出したい
3行  28
4行  30

それぞれのブックのA2番地の温度データのみを抽出し、転記先ブックのA2からA500までまとめたい。

組んだマクロは以下です。
------------------------------
Sub 特定フォルダ内ブックを並べ替えて転記()
Dim myDir As String, myName As String, myBook As Workbook
Dim motodata As Range, sakidata As Range

  '集計用のブックがあるフォルダ名を指定
myDir = "D:\VBA練習"
myName = Dir(myDir & "\" & "*.xls")

  Do While myName <> ""
  '↓転記先の最新レコード位置を取得する
  Set sakidata = Range("A65536").End(xlUp).Offset(1)
  '↓(1)指定した名前のブックを開いて変数に格納する
 Set myBook = Workbooks.Open(Filename:=myDir & "\" & myName)
  '↓(2)転記元を取得する
  Set motodata = myBook.Range("A2")
     '↓(3)転記先に貼り付ける
  motodata.Copy sakidata
  '↓(4)開いたブックを閉じる
  myBook.Close
 myName = Dir()
 Loop
End Sub
------------------------------
mybookというキーワードを使用して、A2セルデータをコピーする構文をご教示いただけませんでしょうか。

以上、長々となってしまいましたが、何卒アドバイスの程お願いいたします。

こんにちは。
VBAの素人なのでネットや本などで自分なりに調べましたが、
どうにも解決できないので、ご教示いただけませんでしょうか。

複数のブックにある同一セル番地にある
データを別のブックにまとめたいのですが、
ブック数が500程度あり、マクロでうまくできないか悩んでいます。

 (1)転記元ブックを開く。
 (2)転記元データをコピーする。
 (3)転記先ファイルのセルに貼り付ける。
 (4)転記元ブックを閉じる。
の繰り返しだと思うのですが、(2)ができず困っています。
ちなみに、500...続きを読む

Aベストアンサー

複数のBookやSheetの処理をする場合
#1さんも言われてるように、Book、Sheetを省略すると
現在アクティブになっている、Book、Sheetを指定したことになってしまいます
一応、修正してみましたが
Sheet名が不明なため"ActiveSheet"としていますが
複数Sheetがある場合、希望どおりの結果を得られない可能性があるので
"workheet("処理対象シート名")"に変更した方がよいと思います


Sub 特定フォルダ内ブックを並べ替えて転記()
Dim myDir As String, myName As String, myBook As Workbook
Dim motodata As Range, sakidata As Range

Dim 転記先 As Worksheet, 転記元 As Worksheet

Set 転記先 = ThisWorkbook.ActiveSheet

'集計用のブックがあるフォルダ名を指定
myDir = "D:\VBA練習"
myName = Dir(myDir & "\" & "*.xls")
Do While myName <> ""
'↓転記先の最新レコード位置を取得する
Set sakidata = 転記先.Range("A65536").End(xlUp).Offset(1)
'↓(1)指定した名前のブックを開いて変数に格納する
Set myBook = Workbooks.Open(Filename:=myDir & "\" & myName)
'↓(2)転記元を取得する

Set 転記元 = myBook.ActiveSheet

Set motodata = 転記元.Range("A2")
'↓(3)転記先に貼り付ける
motodata.Copy sakidata
'↓(4)開いたブックを閉じる
myBook.Close
myName = Dir()
Loop
End Sub

参考まで

複数のBookやSheetの処理をする場合
#1さんも言われてるように、Book、Sheetを省略すると
現在アクティブになっている、Book、Sheetを指定したことになってしまいます
一応、修正してみましたが
Sheet名が不明なため"ActiveSheet"としていますが
複数Sheetがある場合、希望どおりの結果を得られない可能性があるので
"workheet("処理対象シート名")"に変更した方がよいと思います


Sub 特定フォルダ内ブックを並べ替えて転記()
Dim myDir As String, myName As String, myBook As Workbook
Dim moto...続きを読む

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...続きを読む

Qエクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 井上 派遣 企画 29  未調整

◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出
 A      B     C     D    F
1 氏名 役職 部署 年齢 移動時期 
2 高橋 役員 人事 50  未調整


補足
・元データ(シート1)はこれからもデータを追加するので
 その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。

・マクロ、VBAは知識がないので
 関数で作成したいです。

・できるだけエラー(#N/Aなど)表示されないようにしたいです。

説明が不十分で伝わりにくいかと思いますが
よろしくお願いします。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 ...続きを読む

Aベストアンサー

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるため)
.Range("A1:E1").AutoFilter 'A1:E1にオートフィルタ設定
.Range("A1:E1").AutoFilter Field:=3, Criteria1:="=人事", Operator:=xlOr, Criteria2:="=企画" '左から3つ目のフィルタを"人事"と"企画"のOR条件で抽出
.Range("A1:E1").AutoFilter Field:=5, Criteria1:="未調整" '左から5つ目のフィルタを"未調整"で抽出
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") 'A1から最終セル範囲の可視セルをこのシートのA1以降に貼り付け
.AutoFilterMode = False 'オートフィルタ終了
End With 'Sheet1に対する記述おわり
End Sub

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるた...続きを読む

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エクセルで別シート参照、データを転記するに

エクセルで、別のシートを参照し、値を転記するにはどうすればよいでしょうか。例えば、

シートが2枚(AとB)があります。

シート A のD2に職員番号(例えば26)を入れるとシート B のC28にある名前データを読んで、
シート A のD3に表示させたい、

のです。今日、2時間半いろいろ試してみたのですが完成しませんでした。どなたか簡単な方法をご存知でしたら教えてください。 =choose(D2, .....) というのは使えないのでしょうか。

Aベストアンサー

vLookUpを使えば出来ますよ。

http://officeimg.vo.msecnd.net/ja-jp/files/818/530/AF101984660.pdf

Qエクセルで条件に合うものを別シートに抽出(関数)

希望日    りんご   ばなな   みかん   担当   配達チェック
6月1日      2             1     山田
6月3日             4      2     佐藤      
6月1日      3                   山田      済
6月2日             1            佐藤 
6月2日                    2     山田

というデータがsheet1に入力されています。
<条件>
 ・担当 山田のもの
 ・6月2日以前(このデータでは1日と2日)
 ・配達チェックが済でないもの(空白です)

この条件を満たすものをsheet2に抽出したいのです。
希望日    りんご   ばなな   みかん   担当   配達チェック
6月1日      2              1     山田
6月2日                    2     山田
とsheet2に表示させるには関数でできますか?
できれば、セル参照でA1セルに6月2日、B1に山田と入力すると抽出されるととても便利なのですが・・・。
皆様のお知恵を拝借させてください!!

希望日    りんご   ばなな   みかん   担当   配達チェック
6月1日      2             1     山田
6月3日             4      2     佐藤      
6月1日      3                   山田      済
6月2日             1            佐藤 
6月2日                    2     山田

というデータがsheet1に入力されています。
<条件>
 ・担当 山田の...続きを読む

Aベストアンサー

こんばんは!
一例です。

↓の画像でSheet1に作業用の列を設けています。
作業列G2セルに
=IF(COUNTBLANK(Sheet2!$A$1:$B$1),"",IF(AND(A2<=Sheet2!$A$1,E2=Sheet2!$B$1,F2=""),ROW(),""))
という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。

そしてSheet2のA4セルに
=IF(COUNT(Sheet1!$G:$G)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$G:$G,ROW(A1))))
という数式を入れ列方向と行方向にオートフィルでコピー!

A列の表示形式は「日付」にしておきます。
ただ、このままではSheet1に空白セルがあれば「0」が表示されてしまいますので、
当方使用のExcel2003の場合ですが、
メニュー → ツール → オプション → 「表示」タブ → 「ゼロ値」のチェックを外すと
画像のような感じになります。

以上、参考になれば良いのですが・・・m(__)m


人気Q&Aランキング