プロが教える店舗&オフィスのセキュリティ対策術

複数のシートを一つのシートにまとめたい
左から3番目以降のシートのE列のセルに⚪︎が入っている行を抽出して左から2番目のシートに並べたいがVBAだとどのようなコードになるか教えてください。

「複数のシートを一つのシートにまとめたい 」の質問画像

質問者からの補足コメント

  • ご質問ありがとうございます。
    > 『みかん』が何故抽出されている?
    ➡︎画像のみかんは実際には○があります。すいません。

    > 並べるとは?シート毎に詰めて書き込み、次のシートのデータも空白を開けず書き込む?
    ➡︎はい、これができたらありがたいです。

    >『シート:一覧』のE列は更新する事がある?更新したら纏めのデータを一旦クリアして同じ作業を行なう?
    ➡︎はい、そのような流れになります。

      補足日時:2022/09/19 09:00

A 回答 (2件)

>左から3番目以降のシートのE列のセルに⚪︎が入っている行を抽出



『みかん』が何故抽出されている?

>左から2番目のシートに並べたい

並べるとは?
シート毎に詰めて書き込み、次のシートのデータも空白を開けず書き込む?
『シート:一覧』のE列は更新する事がある?
更新したら纏めのデータを一旦クリアして同じ作業を行なう?
    • good
    • 0
この回答へのお礼

お考えいただきありがとうございます。

お礼日時:2022/09/19 09:00

こんにちは



添付図だと結合セルが多くあるようですが、説明がまったくありません。
「結合セル」はいろいろな面で障害の原因となり易く、表としては最悪の形式なのですが・・
また、A、B列の表示も無いので、そちらがどうなっているのかも不明です。

・・ということもあり、以下はかなり大雑把な方法での例ですが、ご参考までに。
(最適とは言えない可能性が高いとは思いますが)

>E列のセルに〇が入っている行を抽出して~~
E列の他のセルは空白であるものと仮定して、以下では「〇」に限らず「テキストの入っているセル」と読み替えて処理しています。

Sub Q13149463()
Dim sh As Worksheet, r As Range
Dim i As Long

Set sh = Worksheets(2)
sh.Rows(6).Resize(Rows.Count - 5).Delete
Set r = sh.Range("A6")

For i = 3 To Worksheets.Count
With Worksheets(i)
.Activate
On Error Resume Next
.Range("E6").Resize(Rows.Count - 5).SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow.Select
If Err.Number = 0 Then
Selection.Copy r
Set r = sh.Cells(sh.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End If
End With
Next i
On Error GoTo 0
End Sub

※ コピペで処理していますので、セル中に関数式等がある場合は、関数式としてコピーされます。
値のみが必要な場合は、一旦、書式をコピペしてから、値のみペーストするようになさればよいでしょう。
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます。
>結合が多く表として最悪の形式➡︎私はこれで挫折しました。途中まで書いたコードでは、結合セルではできません。とエラーになり質問させていただきました。
ご提示頂いたコードで無事転記できました。ありがとうございます♪

お礼日時:2022/09/19 11:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!