- ベストアンサー
Excelで検索した行を抜き出して自動的に新しいシートを作る方法
- Excelで、指定した条件で行を検索し、抜き出して新しいシートを作る方法について教えてください。
- エクセルのデータの移植方法や、他のソフトウェアで同様の操作を行う方法についても教えてください。
- ハッシュタグ用
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>自動的に新しいシートを作りたい ということでしたらマクロになります。 Sub test() Dim MyWord As Variant Dim c As Range Dim firstAddress As String Sheets.Add Type:="ワークシート" ActiveSheet.Next.Select MyWord = "15" '検索語の指定 With Columns(1) Set c = .Find(MyWord) If Not c Is Nothing Then firstAddress = c.Address Do c.EntireRow.Copy _ ActiveSheet.Previous.Cells(Rows.Count, 1).End(xlUp).Offset(1) Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With ActiveSheet.Previous.Rows(1).Delete End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
仰々しく書いて質問しているが、このコーナーで、エクセルでの抜き出し問題が如何に多いかご存じないようだ。毎日のように出る。質問者は質問だけして、このコーナーの質問・回答を一定期間でも見てないようだ。例えばGoogleで「imogasi方式」で照会すれば、エクセルシートでの抜き出し問題の質問例と回答のパターンが出てくる。私の回答はimogasi方式だが、他の回答者が別のパターンの回答を挙げている。 やり方は (1)関数でやる 作業列を使う 作業列を使わない (2)フィルタオプションの設定でやる (3)VBAでやる それも(A)全行IFで聞く (B)フィルタオプションを使う (C)Findメソッドを使う などがまず思いつく。 質問のシブリからして、VBAでの回答は適当で無いと思う。 フィルタオプションの設定を使うのがよいのではないか。 また列Aに同じ値があるかないのか書かないのは、経験の少ない人。 >自動的に新しいシートを作りたいのですが この「自動的に」に拘ると、VBAで無いと出来ない。しかし新しいシートが残っているかどうかは、普通操作者が見りゃ判るので、無い場合は。シートの挿入を手作業でやるもんだ。 ーーー フィルタオプションの設定などエクセルの基本機能だよ。 しかし結果を別シートに出すのは、ちょっとしたコツが要る。 例データ Sheet1のA1:B9 番号 内容 11 a 21 b 56 c 11 d 22 e 13 f 15 g 13 h 条件をSheet1のF1:F4 番号 11 15 13 ーーー Sheet2に行って<--ここがポイント データーフィルターフィルタオプションの設定で フィルタオプションのダイアロウグが出る。 指定した範囲をクリック リスト範囲の斜め↑(セル範囲指定のアイコン)をクリックして Sheet1のシートタブを選択して データの有るSheet1のA1:B9の範囲を指定。閉じるボタンXで脱して Sheet1!$A$1:$B$9がセットできる 検索条件範囲も同じように範囲指定して Sheet1!$G$1:$G$4がセットできる. 抽出範囲はSheet2のA,B列を指定(他の連続2列でもかまわない)。 行数は多めに適当行数指定 OKで 結果 番号 内容 11 a 11 d 13 f 15 g 13 h >やり易いソフトが、あれ ば教えてください。 その場合、今のエクセルのデータの移植方法も、教えていていただけ エクセルの代表的な機能や操作を知らないから、こんな質問になる。
お礼
どうもありがとう。
- DOUGLAS_
- ベストアンサー率74% (397/534)
[回答番号:No.1] の DOUGLAS_ です。 [DataLab] → [TARGET frontierJV] の延長線上の問題でしたら、関連のソフトがあるかも知れませんので、もっと具体的な例を示して、 デジタルライフ > ソフトウェア > Office系ソフト ではなくて、そちら関係のカテゴリに、専門用語を使って質問をされた方が有用な回答が付くかも知れません。 で、前回答のマクロの使い方を補足しておきます。 マクロになれていらっしゃらない場合は不具合があるかも知れませんので、お手許のブックをコピーして、ダミーのブックでお試しください。 1)エクセルで、データの入っているシートをアクティブにしておいて、[Alt] + [F11] を押下します。 2)[Microsoft Visual Basic - ブック名] というウィンドウが開きます。 これを、Visual Basic Editor(VBE)といいます。 3) [挿入(I)] - [標準モジュール(M)] をクリックすると、白い画面が現われます。 これを コードウィンドウ といいます。 4)その コードウィンドウ に、前回答の Sub test() から End Sub までを、コピペします。 5)[Alt] + [F4] で、VBE を閉じます。 6)[Alt] + [F8] で [マクロ] ダイアログ を開き、[マクロ名(M)] の下の テキストボックス の中から [test] を選択して、[実行(R)] をクリックします。 7)以上で、「データの入っているシート」の左隣に、「データの入っているシート」のA列に「15」というデータが入っている行を抽出しました。 ※実用的には、「15」だけではないでしょうから、 Sheets.Add Type:="ワークシート" ActiveSheet.Next.Select MyWord = "15" '検索語の指定 の3行を MyWord = InputBox("抽出する行の検索語を入力してください。", "抽出") If MyWord = "" Then Exit Sub Sheets.Add Type:="ワークシート" ActiveSheet.Next.Select に置き換えてください。 ※また、マクロが不要になった場合は、 8)エクセルで、[Alt] + [F11] を押下して VBEを開きます。 9)コードウィンドウ の左側にある [プロジェクト - VBAProject] - [VBAProfect(ブック名)] - [標準モジュール] - [Module1] を右クリックし、[Module1 の解放(R)] をクリックします。 10)「削除する前に、Module1 をエクスポートしますか?」の問い合わせに [いいえ(N)] をクリックします。 11)[Alt] + [F4] で、VBE を閉じます。 12)これでそのブックを保存すれば、OKです。 ※そもそも、(7)の後にそのブックを保存して、再度開こうとしたとき、あるいはマクロを実行しようとしたときに、「マクロが使用できません。」というメッセージがでたときは、[ツール(T)] - [マクロ(M)] - [セキュリティ(S)] で [セキュリティ レベル] を [中(M)] にして、[OK] してください。
お礼
大変参考になりました、もっと勉強します。ありがとうございます。