集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付けたい。
途中まで書いたコードで恐縮ですが修正点を教えていただけませんでしょうか?
①A列コードと一致するシート名を検索して貼り付けできない
②データ部分3行目から10行目の指定ができない
・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub TEST1()
'2つ目のシートから最終シートまでループ
For i = 2 To Sheets.Count
'データ部分のみを、集計シートにコピー
With Sheets(i).Range("A3").CurrentRegion
.Resize(.Rows.Count - 1).Offset(1, 0).Copy Sheets("集計").Cells
(Rows.Count, "A").End(xlUp).Offset(1, 0)
End With
Next
End Sub
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
#3です
同じ扱いにするようなコードもありますが
この場合は、シート名を比較しますので For i = 2 To Sheets.Count が必要になります
サンプルを実行しながら確認してみてください
Sub sample()
Dim keyCell As Range
Dim i As Integer
Set keyCell = Worksheets("集計").Range("A3")
Do While keyCell.Text <> ""
For i = 2 To Sheets.Count
With Worksheets(i)
If LCase(StrConv(.Name, vbNarrow)) = LCase(StrConv(keyCell.Text, vbNarrow)) Then
.Range("A3").Resize(8, .Range("A3").CurrentRegion.Columns.Count).Copy keyCell
Exit For
End If
End With
Next
Set keyCell = keyCell.End(xlDown)
Loop
End Sub
サンプルの場合、半角全角を半角として、更に大文字小文字を小文字として比較していますので
例えばAの値が Sheet2 で シート名が ShEet2 でも一致して コピペされます。
No.3
- 回答日時:
>実行したところ反応がありませんでした?
数値ですね。。。keyCell.Value をkeyCell.Text に変更してみてください
(2か所)
また、
>一致するシート名 を前提にしていますが
シート名と集計シートA列コードの値はあっていますか?
半角だったり全角だったりしませんか?
半角全角は同じではありません。また、半角スペースなどの混入も確かめてください
同じ扱いにするようなコードもありますが、取り敢えず同じではないので
書き加えていません
コードの説明
コード内ではシートが無い場合、On Error Resume Next でエラーを飛ばして継続するようにしています(他のエラーでも)
なので何も無かったような結果になったと思います。
デバッグする場合、
一時的にOn Error Resume Next をコメントとして実行するとエラーが
表示され止まります。
デバッグを選び、keyCell.Valueのにカーソルを重ねると値が確認できると思います。
エラーが出た場合、エラー№と止まったコードをお知らせください
No.2
- 回答日時:
こんばんは
>修正点を教えていただけませんでしょうか?
A列コードの取得して比較する部分が必要かと
また範囲については、行数が決まっているのなら、定数で良いかと
カラム方向は不明なので・・・Columns.Countとかで取得する事が出来るかも
貼り付ける位置もシート名が書かれているA列該当セルで良さそうです
A列コードと一致するシート名がある場合で図のような場合、
ブック内のシートを調べる必要は乱暴に考えると無いと思います
やり方は色々考えられますが、こんな感じでどうでしょう
コードを書き替える時は少し苦労しそうかな・・
Sub test()
Dim keyCell As Range
Set keyCell = Worksheets("集計").Range("A3")
Do While keyCell.Value <> ""
On Error Resume Next
With Worksheets(keyCell.Value).Range("A3")
.Resize(8, .CurrentRegion.Columns.Count).Copy keyCell
End With
Set keyCell = keyCell.End(xlDown)
Loop
End Sub
少し乱暴かも知れませんが、あくまで参考図とご質問に沿った場合なので
参考程度で
No.1
- 回答日時:
こんにちは
ご質問の文章の内容と、ご提示のコードに関連性が見られないので、何をなさりたいのかよくわかりませんけれど・・
(図もあまりよく見えないので、正確には理解できませんけれど・・)
文章の方を正とするなら・・
1)集計シートのA列を8行おき(←固定で良いのか不明)に読んで
2)その値と同じシートがあるかチェック
3)シートがあれば3~10行を(集計シートの)同じ行から8行にコピペ
(シートが無い場合については、記載が無いのでどうするのか不明)
という手順にする必要があります。
一方でご提示のコードは
・シートをループしている
・最終行までを取得している
・CurrentRegionとしているが、B:Dというのは列固定ではないのか?
・貼り付け先も「集計シート」最下行となっている
(多分、2シート目からオーバーフローしてエラーになりそう)
などなど、ご質問文とはまったく異なる内容になっているように思われます。
考え方は全く変わりますけれど・・
もしも、「集計シート」が文字通りの集計用で、各個別シートの内容を反映すれば良いだけのものであるのなら、集計シートに関数で参照式を設定しておけば済むことのようにも思われます。
そうすることで、マクロを実行せずとも、各シートに入力した内容は「集計シート」に即時に反映されるようになると思いますけれど・・
ただし、「集計シート」のフォーマットが必ずA列の8行おきにシート名が記載されているなどの条件が固定である必要はあります。
また、シート名をセルから参照する形式になるので、INDIRECT関数の利用になってしまうという欠点はありますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) 【部分一致した行を含む8行をシートにコピーする方法】 以下のような作業を行いたいのですが、どなたがコ 1 2022/08/30 16:24
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excel マクロについての相談
-
別のシートを参照して計算する方法
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
VBA 最終行まで数式をコピーする
-
【ExcelVBA】全シートのセルの...
-
特定の文字を含むシートだけマ...
-
エクセルのマクロについて教え...
-
VBA 入力月で該当シートを選択...
-
一括印刷マクロ シート名を数字...
-
【ExcelVBA】動的にボタン、ボ...
-
VBA 存在しないシートを選...
-
同じ作業を複数のシートに実行...
-
ListViewの画面の更新
-
実行時エラー1004「Select メソ...
-
シートが保護されている状態で...
-
エクセルで通し番号を入れてチ...
-
【VBA】指定した検索条件に一致...
-
ユーザーフォームに入力したデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報