(1)sheet1のA列からH列までデータが入っています。
(2)検索機能を使って発見されたセル(検索されるデータはA列にのみ入っています。)からA~H列のデータが入っている最終行まで選択し切り取り。(場合によっては検索を2回してから選択範囲を決めます)
(3)sheet2のA2へ貼り付け
(1)~(3)の作業をsheet7まで繰り返します。
マクロの記録を行うと選択範囲が指定され別のデータの時にも前と同じ範囲しか指定できません。
例
sheet1検索ち→発見されたセル(この場合A3)からA~H列の最終行(A9)選択及び切り取り→sheet2のA2へ貼り付け→検索ち→文字が縦に2回続いている場合は次を検索→発見されたセル(この場合A6)からA~H列の最終行(H8)選択及び切り取り→sheet3のA2へ貼り付け
sheet1 → sheet2 → sheet3
ABCDEHGH ABCDEHGH ABCDEHGH
1ち あいうえおか 1 1
2ひあいう えおか 2ちあい い うえ 2ちあいうえお か
3ちあい い うえ 3 あいうえお か 3ひあいうえおかき
4ゆあいうえお か 4ちあいうおかき 4ちあ うえおき
5ちあいうおかき 5ゆあいうえおかき
6 あいうえおかき 6ちあいうえお か
7ちあいうえお か 7ひあいうえおかき
8ひあいうえおかき 8ちあ うえおき
9ちあ うえおき
*実際のデータは2000行ぐらいデータが入っています。
*見えずらくてすみません。
No.3ベストアンサー
- 回答日時:
最初に切り取り開始行を検索して配列にでも入れておき、ループを回して、切り取り開始行~最終行までのコピーを各シートに貼り付けると言う処理になるかと思います。
サンプルコードを書きますので、Step実行でもして何をしているか確認して見てください。
Sub sample()
Dim nMaxRow As Long
Dim nLoop As Long
Dim nSheet As Long
Dim nCount As Long
Dim nStartRow() As Long '切り取り開始行を入れる配列
Sheets("Sheet1").Select
'*** A2から順に見て行き、選択開始位置を求める
nMaxRow = ActiveSheet.UsedRange.End(xlDown).Row 'データのある最終行
nCount = 0
For nLoop = 2 To nMaxRow
'セルの値が検索文字と同一かつ、次のセルの値は検索文字と不一致なら切り取り開始行
If StrComp(Cells(1, 1), Cells(nLoop, 1)) = 0 And StrComp(Cells(1, 1), Cells(nLoop + 1, 1)) <> 0 Then
ReDim Preserve nStartRow(nCount) '配列を広げる
nStartRow(nCount) = nLoop '切り取り開始行を代入
nCount = nCount + 1
If nCount > 5 Then Exit For 'Sheet7までなのでこれ以上の切り取りは不要
End If
Next nLoop
'*** 検索文字が無かった場合
If nCount = 0 Then
MsgBox ("検索文字「" & sSearchWord & "」なし")
End
End If
'*** Sheet2~7にデータを張りつけ
For nSheet = 0 To UBound(nStartRow())
'Sheet1の切り取り開始行から最終行までを選択してコピー
Sheets("Sheet1").Select
Range(Cells(nStartRow(nSheet), 1), Cells(nMaxRow, 8)).Select
Selection.Copy
'Sheet2~7のA2に貼り付け
Sheets("Sheet" & nSheet + 2).Select
Range("A2").Select
ActiveSheet.Paste
Next nSheet
End Sub
No.2
- 回答日時:
マクロの記録で勉強しているレベルでは出来ないでしょう。
質問がわかりにくい。
>(1)~(3)の作業をsheet7まで繰り返します。
などはどういう意味なのか。
検索対象のシートと、結果を出すシートは、分けて説明しないと
混乱する。
Sheet2などは検索結果を出す(置く)シートなのでは。Sheet3はどういうものか
どうもSheet1-Sheet7までシートがあってこれが検索対象のシート。
そして検索結果を出すシートは例えばSheet8以後。そしてシートのA2しか使わない。
Sheet8以後は、Sheet1の中に1行の検索文字列が見つかると、Sheet8以後の1つのシートに結果を出す。(シートを変える)。そしてSheet7まで同じような操作を続ける。
ーー
同じ文字列が沢山の行で有るとSheet8以下シートが増えるがよいのか。
文字列を変えて質問の処理をすることは無いのか。その場合以前の文字列で検索した結果のシートはどうするのか(そのまま置いておいて、後にシートを増やすのか、シートを削除するのか)
ーー
結果を出すシートのA2以外のセルは内容なしでよいのか。
多分そう送ではなかろう。その点は?
ーーー
参考になりそうなことを1つ
Sub test01()
Dim sh As Worksheet
For Each sh In Worksheets(Array("Sheet1", "Sheet3", "Sheet4"))
MsgBox sh.Name '本来はここに各1シート分の処理のコードを入れる
Next
End Sub
これの応用で、選択したシートだけを処理対象に出来る。
ーー
FindメソッドはFindNextとの連携がVBA初心者には難しい。
初心者のうちは、A列全行総当りで探す方法もある。
検索の終わりも
A.オジェクトがNothing
B。最初に見つかった行に回帰
で見つける方法が有る。
WEBで「VBA Find FindNext」で照会して勉強のこと。
1シートで、次々検索する操作をマクロの記録を撮るのも参考になる。
ーー
他に、結局何がわからないのか、ブレークダウンして質問のこと。
No.1
- 回答日時:
A列のセル値を上から順番に見ていって、”ち”が見つかったらカウントを入れる。
カウントが2になった時、その行から最終行までを切り取り別シートへ移動する。
ただし”空白”だった場合はカウントを0にする。
とても鈍行な方法ですけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お肉の下のシートを煮込んでし...
-
エクセルを利用して、日計と累...
-
エクセルで1行だけ数式が反映さ...
-
指定した条件でTRANSPOSE関数を...
-
エクセルでシートごとに作成し...
-
毎日の日計を別シートに自動で...
-
エクセルオートフィルターした...
-
エクセルで2つのシートに同じ名...
-
エクセルで別シート参照、デー...
-
エクセルでフラグがたっている...
-
excel シート1の奇数(偶数)...
-
2つのシート間での重複データ...
-
エクセルでif関数を使って、別...
-
条件にマッチする行を抽出するV...
-
excelマクロで複数シート間のデ...
-
EOMONTH関数の代わり
-
エクセル入力で項目別に複数シ...
-
エクセル ○印がついている行を...
-
見積作成(エクセル)について...
-
エクセルのシートをコピーして...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
お肉の下のシートを煮込んでし...
-
エクセルを利用して、日計と累...
-
エクセルのシートをコピーして...
-
2つのシート間での重複データ...
-
毎日の日計を別シートに自動で...
-
条件にマッチする行を抽出するV...
-
エクセルで1行だけ数式が反映さ...
-
エクセルで2つのシートに同じ名...
-
指定した条件でTRANSPOSE関数を...
-
excel シート1の奇数(偶数)...
-
エクセルでフラグがたっている...
-
チュロス袋の代用
-
Excelで複数のシートに列のグル...
-
エクセル ○印がついている行を...
-
EOMONTH関数の代わり
-
EXCELで受験票を作成したい(名...
-
エクセルで○のついた項目を抽出
-
複数シートのセルの 記号の数...
-
VBA 縦のデータを横にするコード
-
複数シートの列、幅の一括変更方法
おすすめ情報