- ベストアンサー
エクセル2000マクロ検索方法
imogasiの回答
booka.xlsとbookb.xlsを\My Documentsに作らせてもらった。アウトプットファイルはbookbのsheet2に作らせてもらった。データのファイル(Book)が違うため勝手が違い多少苦労しました。booka.xlsのVBE画面に下記test01をコーディングしてください。Thisworkbookを使って切りぬけましたが、もっと良い答えが出ることを期待しつつ。小数例でテスト済です。結果も別ファイルにしたかったが、夜もふけて来て・・・。 Sub test01() '----最下行数を得る Workbooks.Open "c:\My Documents\bookb.xls" a = ThisWorkbook.Worksheets("sheet1").Range("a2").CurrentRegion.Rows.Count b = Worksheets("sheet1").Range("a2").CurrentRegion.Rows.Count '-----ポインターを初期設定 i = 2 '2行目からデータ。BookaのSheet1の行ポインター j = 2 '2行目からデータ。BookbのSheet1の行ポインター k = 2 '2行目からデータ。BookbのSheet2の行ポインター '---- p01: '-----終わり判定 If i > a + 1 Then GoTo p02 If j > b + 1 Then GoTo p03 '----Sheet1のキーとSheet2のキーの比較をする '----一致する時なにもしないで、 Comp: If ThisWorkbook.Worksheets("sheet1").Cells(i, 1) = Worksheets("sheet1").Cells(j, 1) Then GoTo Equal If ThisWorkbook.Worksheets("sheet1").Cells(i, 1) > Worksheets("sheet1").Cells(j, 1) Then GoTo High If ThisWorkbook.Worksheets("sheet1").Cells(i, 1) < Worksheets("sheet1").Cells(j, 1) Then GoTo Low '--------マスターとトランザクションあり。何もしない。 Equal: i = i + 1 'マスターとトランザクションを進める j = j + 1 GoTo p01 '-------- マスターなし。新規トランザクション・新顔 '------本問題ではこのケース無しとしていると見える。 High: j = j + 1 GoTo p01 '--------トランザクションなし '-------本問題では、このケースをSheet2へ書き出す Low: MsgBox ThisWorkbook.Worksheets("sheet1").Cells(i, 2) ThisWorkbook.Worksheets("sheet2").Cells(k, 1) = ThisWorkbook.Worksheets("sheet1").Cells(i, 1) ThisWorkbook.Worksheets("sheet2").Cells(k, 2) = ThisWorkbook.Worksheets("sheet1").Cells(i, 2) i = i + 1 'マスターを進める k = k + 1 GoTo p01 '-------マスターの終わり p02: For l = i To a ThisWorkbook.Worksheets("sheet2").Cells(k, 1) = Worksheets("sheet1").Cells(l, 1) ThisWorkbook.Worksheets("sheet2").Cells(k, 2) = Worksheets("sheet1").Cells(l, 2) k = k + 1 Next l ThisWorkbook.Close End '------本問題では起こり得ないと仮定 p03: End End Sub
関連するQ&A
- EXCEL マクロ どう記述したらよいですか?
お世話になります。 まったくの素人です。 以下のような処理をしたいと考えております。 1)1つのフォルダに AAA.xls BBB.xls CCC.xls・・・をまとめておきます。 それとは別に、フォーマット.xls を用意します。 2)AAAを開き、aというシートにある列(1列)を選択、コピーし、 フォーマットの 【F列】 に 【値貼り付け】 で貼り付ける。 AAAは閉じる。 3)BBBを開き、aというシートにある列(1列)を選択、コピーし、 フォーマットの 【G列】 に 【値貼り付け】 で貼り付ける。 BBBを閉じる。 4)CCC・・・(aというシート名は固定、コピーする列も固定で1列のみです)。 5)以下、フォルダ内の全ファイルについて、同じ処理を繰り返し、 すべて貼り付け終えたら、完了。 宿題の丸投げのようで申し訳ないのですが、ご教示いただけると 幸いです。よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルでマッチング
2つのエクセルファイルの内容をマッチングさせたいんですけど、 例えば、aaa.xlsとbbb.xlsというのがあって、 aaa.xlsのA列とbbb.xlsのA列にファイル名、 bbb.xlsのB列にパッケージ名が格納されていて、 aaa.xlsのA列の1行目から順に、bbb.xlsのA列と 同じファイル名が存在するかマッチングさせていき、 マッチした場合にマッチした行のパッケージ名を aaa.xlsのB列に表示させたいんですけど、 関数なりマクロなりを使ってなんとかならないでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCELで複数行の検索
初心者です。 Aファイルのaaa、bbbなどをキーに Bファイルを検索してできるだけ簡単にマクロ等使わずに 下記のような抽出をする方法があれば教えてください。 よろしくお願いします。 Aファイル aaa bbb ccc Bファイル(例えば「ddd」と「あ」は別セルです) ddd あ eee い aaa う fff え bbb お ggg か ccc き 結果 Aファイル aaa う bbb お ccc き
- ベストアンサー
- オフィス系ソフト
- エクセル関数を使って検索したいです。
やりたいことは以下の通りです。 Sheet1~Sheet15が存在します。Sheet2~Sheet15には3列で行がそれぞれ異なる表があります。例えばSheet1は5行3列、Sheet2は10行3列、Sheet4は30行3列のように。ちなみにこれらの表は行が追加されていきます。 Sheet1にも同様に3列の表があるのですが、Sheet1のB列(2行目)に、式を作りたいです。 どんな式かと言うと、Sheet1のA列(1行目)に値を入れると、それと同じ値を、Sheet2~Sheet15のA列(1行目)と同じものを探し、そのSheetのB列(2行目)の値を返すというようにしたいです。 VLOOKUPを使うといいかと思うのですが、Sheetを14個もまたいで検索したい時にIFで作るとエクセル2003なので入れ子が7個以上になってしまいうまくいきません。 ちなみに、Sheet1に入力する値はAAA1やBBB2の様にアルファベットと数字の組み合わせです。 よって、例えばSheet2のA列にはAAA1、AAA2、AAA3、AAA4の様に、Sheet2のA列にはBBB1、BBB2、BBB3、BBB4の要に入力された状態になっています。 どなたかうまく切り抜ける方法を教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロで、別ファイルの数値を参照する方法
現在aaa.xlsというファイルを開いていて、 そのセルA1には20070621という数値が入っています。 別にbbb_20070621.xlsというファイルがあって、 そのファイルのsheet1内の、B1の値を参照したいと思います。 bbb_20070621.xlsのようなファイルが無数にあるので、 ファイルを開かなければいけないINDIRECT関数は使いたくありません。 =INDIRECT("[bbb_"&A1&".xls]Sheet1!B1") ファイルを開かず参照できるように、 できればマクロ(VBA)で組みたいと思っています。 RangeやCellでいろいろ試してみたのですが、 どうもうまくいかず、 分厚いマニュアルにも書いてありませんでした。。 初歩的な質問ですいませんが、 どなたかよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- excel2000マクロ記述方法
抽出条件方法のマクロ記述 1つのファイルのシートの中にデータがあります。 例ファイル名a.xlsシート名マスター B列 C列 D列 E列 項目名 倉庫 翻訳 ソート 非表示項目 A057 レオナ工場 1 A870 セ新港 2 Y A887 セ日向 3 もう1つのファイル 例ファイル名B.xlsシート名WORK A列 B列 c列 d列 E列 連結コード 品名 倉庫 出荷1 加工1 AA 0G120 0G120 A870 0 0 0 AA 0H120 0H120 A057 0 0 0 AA 0S0100 0S010 A887 0 0 0 抽出条件方法 シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して 非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい 場合のマクロ記述の方法を教えてください。よろしくお願いします。 (抽出表示方法) AA 0H120 0H120 A057 0 0 0 AA 0S0100 0S010 A887 0 0 0
- ベストアンサー
- オフィス系ソフト
- 複数のexcelファイルの置換について
AAA.xlsというファイルの中の情報を複数のexcelファイル(A.xls、B.xls、C.xls、D.xls)でリンク付けしてあるとします。 AAA.xlsをBBB.xlsに名前を変更するとリンクが成り立たなくなってしまいます。 そこで、一括でリンクを変更する方法を教えてください。 マクロでもいいです。 =[AAA.xls]Sheet1!$A$1 これを =[BBB.xls]Sheet1!$A$1 に一括変更したいのです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- excel2000マクロ抽出方法
2つのファイルがあります。ブック名A.XLS シート名 WORK ブック名b.XLS シート名 SORT ブック名A.XLS シート名 WORKに下記のデータが入っています。 AD 1300G A227550 000PA505(C列2行目) 200112(F列)200201(G列)200202(H列)200203(I列)200204(J列)200205(K列)→1行目固定データ AD 1300G A227550 000PA533(C列3行目) ブック名b.XLS シート名 SORTに下記のデータが入っています。 AD 1300G A227550 000PA505(A列2行目)200112(E列)200201(F列)200202(G列)200203(H列)200204(I列)200205(J列) →1行目E列~J列のデータは都度変わっている AD 1300G A227550 000PA533(A列3行目) データ抽出条件 ブック名A.XLS シート名 WORKの F列~K列の1行目の列データとブック名b.XLS シート名 SORTの E列~J列の1行目の列データが同じで、ブック名A.XLS シート名 WORKのC列の2行目以降のコードと ブック名b.XLS シート名 SORTのA列の2行目以降のコードが同じだったら ブック名b.XLS シート名 WORKの E列~J列の同じ行にデータを入れる。違うときは、 ブック名b.XLS シート名 WORKのデータはそのままにする。 上記の条件を満たしたマクロの記述の仕方を教えてください。 以上よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル マクロ 簡素化
マクロ初心者です。 下記のデータのコピペする、マクロを使用しています。 下記にはAAAとBBBの2つのエクセルへのコピペのみしか記述していませんが、 その下に50ファイル分のファイル名、コピー元、コピー先だけが違うマクロが並んでいます。 メンテナンスや更新に手作業で行っているので、非常に時間がかかります。 例えば、別のシートにファイル名、コピー元、コピー先の一覧を作成し、 そのシートでファイル名、コピー元、コピー先を修正し、コピペができるようになるなど、 どうにかして簡素化したいのですが、どのように実現すればいいか、教えてくださると助かります。 ---------------------------------------------------------------------- Private Sub CommandButton1_Click() Dim wb As Workbook Application.ScreenUpdating = False Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\AAA.xls", UpdateLinks:=0) ThisWorkbook.Sheets("BBB").Range("A1:B1").Copy wb.Sheets("CCC").Range("A1:B1").PasteSpecial (xlPasteValues) Application.CutCopyMode = False Application.DisplayAlerts = False wb.Close (True) Application.DisplayAlerts = True Application.ScreenUpdating = True Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\BBB.xls", UpdateLinks:=0) ThisWorkbook.Sheets("BBB").Range("A2:B2").Copy wb.Sheets("CCC").Range("A2:B2").PasteSpecial (xlPasteValues) Application.CutCopyMode = False Application.DisplayAlerts = False wb.Close (True) Application.DisplayAlerts = True Application.ScreenUpdating = True 'アイテム名、コピー元、コピー先、だけがちがう、同じようなマクロが50ファイル分ある。 End Sub
- ベストアンサー
- オフィス系ソフト
- excelマクロ 別ファイルの特定列をコピーしたい
C:\testの配下にexcelファイル「aaa.xls」「aaa_yyyymmdd.xls」「bbbxls」があります。 「aaa_yyyymmdd.xls」は「aaa.xls」のバックアップファイルです。 又、「bbbxls」にマクロを記述しようと思います。 ☆処理内容☆ 「aaa.xls」「aaa_yyyymmdd.xls」が開いていない状態で、「aaa.xls」のシート「sheet1」内の E列をコピーして「bbbxls」のシート「sheet3」のA列に貼り付け。 「aaa_yyyymmdd.xls」のシート「sheet1」内の E列をコピーして「bbbxls」のシート「sheet3」のB列に貼り付け。 その後、張り付けたA列を正としB列と比較して、差異があった場合はB列の差異があった部分の セルに色つけをした後、「aaa_yyyymmdd.xls」をC:\test:\oldフォルダに移動する。 上記のようなexcelマクロを作成中なのですが、できなくて困っております。 有識者の方、助けを貸してください。 よろしくお願い致します。
- 締切済み
- Visual Basic