• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2003 検索後コピー貼付マクロ)

Excel2003 検索後コピー貼付マクロ

このQ&Aのポイント
  • Excel2003を使用して、データ一覧から特定の項目のデータを別のシートにコピー&ペーストするマクロの作成方法を教えてください。
  • 以下の手順で行ってください。
  • 1. データ一覧が記載されているシートを選択します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.4

Sub bPaste() Const targetStr As String = "圧縮" Dim rIdx1, rIdxA, targetN As Long Sheets("SheetA").Select Columns("A:A").Insert Shift:=xlToRight For rIdx1 = 1 To Range("B65536").End(xlUp).Row Cells(rIdx1, 1).Value = rIdx1 Next Cells(1, 2).Select Selection.SortSpecial SortMethod:=xlSyllabary, Key1:=Range("B1"), Order1:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom For rIdx1 = 1 To Range("A65536").End(xlUp).Row If Cells(rIdx1, 2).Value = targetStr Then rIdxA = rIdx1 Exit For End If Next For rIdx1 = rIdxA To Range("A65536").End(xlUp).Row If Cells(rIdx1, 2).Value = targetStr Then targetN = targetN + 1 Else Exit For End If Next Range(Cells(rIdxA, 2), Cells(rIdxA + targetN - 1, 4)).Copy Sheets("SheetB").Activate Range(Cells(1, 1), Cells(targetN, 3)).PasteSpecial xlPasteAll Cells(1, 1).Select Sheets("SheetA").Select Cells(1, 1).Select Selection.SortSpecial SortMethod:=xlSyllabary, Key1:=Range("A1"), Order1:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Columns("A:A").Delete Shift:=xlToLeft End Sub 何をやっているのかは、ご自身で解析してみてください。

e05513
質問者

お礼

解析できました。 本当にありがとうございました。 勉強になりました。 ***下記のようにしました。*** Sub bPaste() MyCode = Application.InputBox("作業内容入力", Type:=2) Dim targetStr As String targetStr = MyCode 'targetStr = InputBox("入力してね") Dim rIdx1, rIdxA, targetN As Long Sheets("SheetA").Select Columns("A:A").Insert Shift:=xlToRight For rIdx1 = 1 To Range("B65536").End(xlUp).Row Cells(rIdx1, 1).Value = rIdx1 Next Cells(1, 2).Select Selection.SortSpecial SortMethod:=xlSyllabary, Key1:=Range("B1"), Order1:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom For rIdx1 = 1 To Range("A65536").End(xlUp).Row If Cells(rIdx1, 2).Value = targetStr Then rIdxA = rIdx1 Exit For End If Next For rIdx1 = rIdxA To Range("A65536").End(xlUp).Row If Cells(rIdx1, 2).Value = targetStr Then targetN = targetN + 1 Else Exit For End If Next Range(Cells(rIdxA, 2), Cells(rIdxA + targetN - 1, 4)).Copy Sheets("SheetB").Activate Range(Cells(1, 1), Cells(targetN, 3)).PasteSpecial xlPasteAll Cells(1, 1).Select Sheets("SheetA").Select Cells(1, 1).Select 'Selection.SortSpecial SortMethod:=xlSyllabary, Key1:=Range("A1"), Order1:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Columns("A:A").Delete Shift:=xlToLeft End Sub

e05513
質問者

補足

処理時間が早い為、これはいいと思うのですが ・・・・解析わかりませんでした。 "圧縮"だけでは無くて他のデータも検索、コピーペーストしたいので、 以前に使用した MyCode = Application.InputBox("作業内容入力", Type:=2) を使おうと思いましたが駄目でした。。。 勉強不足ですね。もう少し考えてみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

この質問は、質問と言うより、丸投げでコード作成「依頼」ではないか。 先日も入試問題の回答作成を質問コーナーにした問題がキッカケで、考える人が少なくなっていることに批判が多い。 フィルタでA列の{圧縮」行を抜き出し、可視セルを選択して(編集ージャンプーセル選択ー可視セルーコピー)、別シートへ-貼り付ける操作をして、マクロの記録を採って勉強すること。 それをしてから判らない点があれば質問するのが筋。

e05513
質問者

補足

大変に失礼を致しました。 マクロにフィルターは、一番最初に試してみました。 マクロをそのままをコピーペーストしてしまいます。 動いているのですが、データが大きいので保存や集計に時間がかかります。 他にもマクロを使用しているし、関数も使用しているので、ここが問題なのかは調査中ですが、方法が無いかと思い相談をしてみました。 言葉足らずで大変に失礼を致しました。 ********************************************* Sub MyFilter() 'フィルター検索と貼付 Sheets("表示データベース").Select Dim MyCode As String Dim Rng As Range Set Rng = Range("A1").CurrentRegion 'アクティブセル領域取得 Rng.AutoFilter 'フィルタ設定 MyCode = Application.InputBox("作業内容入力", Type:=2) Rng.AutoFilter Field:=1, Criteria1:=MyCode '変数MyCodeに格納されたデータ抽出 '可視セルをコピー Rng.SpecialCells(xlCellTypeVisible).Copy _ 'Destination:=Sheets("試行").Range("A10") Worksheets("KYF分析シート").Select ActiveSheet.Paste Rng.AutoFilter 'フィルタ解除 '「試行」シートで With Worksheets("KYF分析シート") End With End Sub ***************************************

全文を見る
すると、全ての回答が全文表示されます。
  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.2

できたのであれば、質問を締め切られた方がよろしいと思います。

e05513
質問者

補足

ありがとうございます。 できたのですが 1014行のデータから抽出をするのに使いたい為 教えて頂いたマクロでは検索に時間がかかり過ぎていました。 他にも方法があるのではと思い閉め切りませんでした。 申し訳ありませんが、もう少し待ってから閉め切ります。

全文を見る
すると、全ての回答が全文表示されます。
  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.1

Sub aPaste() Const targetStr As String = "圧縮" Dim rIdx1, rIdx2 As Long For rIdx1 = 1 To Range("A65536").End(xlUp).Row Sheets("SheetA").Select If Sheets("SheetA").Cells(rIdx1, 1).Value = targetStr Then rIdx2 = rIdx2 + 1 Sheets("SheetA").Activate Range(Cells(rIdx1, 1), Cells(rIdx1, 3)).Copy Sheets("SheetB").Activate Range(Cells(rIdx2, 1), Cells(rIdx2, 3)).PasteSpecial xlPasteAll End If Next End Sub

e05513
質問者

お礼

大変に失礼を致しました。 できました。ありがとうございました。

e05513
質問者

補足

ありがとうございました。 素人で申し訳ありませんが、"圧縮"は4行のデータがあります。 1行だけコピーされました。4行コピーをしたいです。 また、行数は項目によってバラバラです。 以上、よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルマクロでデータの検索と転記方法

    エクセル2000です。 sheetAの 10行~165行に表Aがあります。 途中に、空白行や小計行もかなりあります。 C列のコード(文字列、数値両方あります)をキーにして、SheetBの4行目から91行目までの表B(A列にコードがあります)のB列の数値を、sheetAの10行~170行のD列に転記したいのです。sheetAの表の小計行のC列は空白です。SheetBの表Bのコードは、sheetAの表Aのコードの一部しかありません。ですから、sheetAの表AのコードがSheetBの表Bになかったらそこは何も転記しません。 わかりづらい説明かと思いますが、マクロの記述をお教えいただければ幸いです。

  • エクセルマクロでシートの比較

    sheetAとsheetBそれぞれのA列に千件くらいのデータが入っています。 かなり重複もあります。 今回マクロでSheetCのA列に重複されないデータのみ抜き出したいと思います。 どのような記述になるのでしょうか?

  • エクセル マクロ

    エクセルを使って12桁の数字をsheet A と sheetBとの違いを調べる、表?をつくりたいのですが、マクロを使えば簡単と聞きました、マクロは全くわからないので、マクロを使わなくてもいいのですが、良い方法はありますか?  例えば エクセルの sheet A に 12桁の数字を50, sheet Bに12桁の数字を50, その中からsheetAにはあってsheetBには無いもの、sheetAには無くてsheetBには有るもの を色をつけてわかるようにしたいと思っています。 みなさんよろしくお願いいたします。

  • Excel VBA シート間のコピー・ペースト

    いつもお世話になります。 「sheetA」「sheetB」の二つのシートがあります。 このシート間でのコピー・ペーストをしたいのです。 (1)「sheetA」の『R1C4』を「sheetB」の『R1C2』に、  「sheetA」の『R1C9』を「sheetB」の『R1C7』に、コピー・ペースト。  尚、最終行は、毎回違います。 (2)「sheetB」の『R1C1』には、先程、ペーストした、『R1C2』に値があるだけ、  ≪○≫印を入れたいのです。 以上、よろしくお願いします。

  • sheet1セルA1のデータ切り替えについて

    Excel2010に3つのシートsheetA、sheetB、sheetC があります。 それぞれセルA1のデータは,sheetAのA1=ブランク、sheetBのA1=b、sheetCのA1=c とします。 この状態で、 sheetBがActiveの時に、sheetAのA1=b sheetCがActiveの時に、sheetAのA1=c になるような関数、もしくはマクロを組み込みたいと思います。 どのようにしたら実現できますでしょうか? よろしくお願いします。

  • excelのマクロについて。

    sheetAにデータの一覧があります。 商品aだったらsheetBへ、商品bだったらsheet3へ・・・ という振り分けをボタン一つでできるマクロを作成したいのですが、 どのようにすればいいでしょうか?(vbはあまりわかりません・・・) sheetAにデータをどんどん追加して、ボタン一つで振り分け・・・・ とういうのが理想です。 良い知恵をかしてください。宜しくお願いいたします。

  • エクセルのデータ移動(マクロ使用)

    エクセルのSheetAを使用して入力画面を作成し、そのデータをSheetBやSheetCへリンクさせて印刷を行っています。1件ごとの入力になるので、データが残りません。このSheetAのデータを別のSheetDか別のファイルへ行ごとの横一直線という形式で残したいのですが、どうすればよろしいでしょうか? また、反対に移動したデータを戻す場合などどうしたらいいのでしょうか? マクロを利用すればいいように思うのですが、マクロは印刷程度の簡単なマクロの知識しかありません。 もしも、何か方法があるようでしたら、いろんな応用が利きそうなので、今後に向かって幅が広がりそうなので、是非詳しい方お願いします。 <例> 1つめのデータをSheetAへ入力 SheetA セルA1 h16.12.1                  B2 ○○商事                           C3 △△-□□          ↓(データー移行) SheetD セルA1 h16.12.1 B1 ○○商事 C1 △△-□□  (この間にSheetAのデータはすべて削除) 2つめのデータをSheetAへ入力 SheetA セルA1 h16.12.3                 B2 ●●販売                            C3 ▲▲-■■          ↓(データー移行) SheetD セルA1 h16.12.1 B1 ○○商事 C1 △△-□□       A2 h16.12.3 B2 ●●販売 C2 ▲▲-■■

  • エクセル(複数シート)からのデータ抽出の方法

    初めての質問です。 分かりにくかったら、聞いてください。 画像も添付しましたのでご参照ください。 以下質問です。 エクセルのデータが2つのSheetに存在しています。 SheetA 下記のようなデータ一覧が存在しているとします。 列A    列B    列C NO.  地名 都道府県所在地 1   愛知     名古屋 2   大阪     大阪 3   福岡     福岡 ・ ・ ・ また、SheetBにSheetAの列AのNO.の項目の一部のデータのみが 存在しています。 列A NO. 3 ・ ・ SheetAのデータ一覧から、SheetBのNO.のデータ(行)のみを抽出して SheetCへ出力したいのですが、どのような方法が考えられるでしょうか。 実際のデータは500くらいの商品データのエクセルが1つあり(上でいうSheetB)、 メーカの商品データ約20000のデータ(上でいうSheetA)の中から、価格などを 常にメンテナンスしないといけないのですが、弊社で取り扱っている商品は 決まっていて(SheetB)NO.データは存在しているので、20000データから 抽出して弊社用の500データに絞り込めれば、作業がとても楽になります。 今は、1品ごとに検索しながら抽出しています。 1人で経営している小さな個人商店なので、こんなことも出来ないのですが、 ご回答のほど、どうぞよろしくお願いいたします。

  • エクセルで自動的に範囲選択させるには?

    職場のエクセルの表を壊してしまいました。チカラを貸してください。 SHEETaに表があります。 常に表の最終行にデータを入力しています。  A10     B10    C10    D10   E10 3月3日   りんご   8個   みかん  5個 この一部を同じブックのSHEETbの表の最終行に =IF(SHEETa!A10="","",SHEETa!A10)といったふうに返しています。  A15     B15    C15 3月3日   みかん   5個 ちなみにSHEETaとSHEETbのデータの並び順は違います。 行の番号も違います。 作業としては、SHEETaを入力したあと、SHEETbの最終行を1行だけ 印刷します。 SHEETaを入力すると自動的にSHEETbの最終行が選択されるようにするにはどうしたらいいのでしょうか?    

  • Vlookup関数について

    sheetAのK列に、A列(書式は文字列)の値に一致するsheetBのA列(書式は文字列)の中から6列目の値を抽出したい。 SheetAのK列に =VLOOKUP($A2,SheetB!$A$3:$F$23,6,FALSE) としsheetB-F列の金額を入力したいのですが、「#N/A」のエラーが出ます。改善策ご教授願えませんでしょうか?。 sheetA A列 ~ K列 2210      190円 2210      190円 2209      150円 2209      150円 2208      80円 2208      80円 2208      80円 sheetB A列   B列  C列 D列 E列 F列 タイトル01                タイトル02                 2210             190円 2209             150円 2208             80円 2207              :  :               :  :

EB-S02H 壁紙しか映らない
このQ&Aのポイント
  • EB-S02Hは壁紙専用のプロジェクターです。
  • 他の画像や映像を表示することはできません。
  • 壁紙を映し出すことに特化しており、高画質でクリアな映像を楽しむことができます。
回答を見る