- ベストアンサー
結合していないセルの検索?
- 複数シートから指定の1行を別のシートに追加する際、結合されていないセルの位置を検索して結合させるか、他の方法を探している。
- 指定の範囲を貼り付け先にコピーするスクリプトの作成例が提示されているが、結合されていないセルの検索方法は不明。
- 効率的な方法を教えてほしい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
各シートのB~AC列のデータをsheetAのA列~AB列にセルの結合を含めたコピーするコードを作成したいのでしたら下記のような方法は如何でしょう。 Sub コピー() Dim sh1 As Worksheet Dim FoundCell As Range, FirstCell As Range Dim MaxRow As Long Dim CR, PR As Range '「項 目」という文字列を検索 For i = 1 To Worksheets.Count - 2 '←最大シート数 Sheets(Sheets(i).Name).Select Set FoundCell = Cells.Find(What:="項*目") If FoundCell Is Nothing Then MsgBox "見つかりません" Exit Sub Else 'コピー元セル範囲を変数に格納 Set CR = FoundCell.Resize(2, 28) 'sheetA 最終行 MaxRow = Sheets("SheetA").Cells(Rows.Count, 1).End(xlUp).Row 'コピー先セル範囲を変数に格納 Set PR = Sheets("SheetA").Range("A" & MaxRow + 2).Resize(2, 28) '指定の範囲を貼り付け先にコピー CR.Copy Destination:=PR End If Next i End Sub 添付画像は赤い罫線は結合をしていないセルの罫線をしめしています。 Copy Destinationは一般的なcopyより高速だといわれています。 注意事項はコピー元とコピー先共に同一セル数でセル範囲を指定する事が必須です。 Range("A1:A5").Copy Range("C1")は可能ですが、Copy Destinationではセル範囲が異なるのでこのような指定は出来ません。
その他の回答 (1)
- Prome_Lin
- ベストアンサー率42% (201/470)
セルが結合されている場合の処理を考えられてはどうでしょうか? 例えば、「A1 」セルが結合されている複数のセルの1つだとします。 すると、 If Range("A1").MergeCells Then (もちろん、Cells(1, 1)・・・で可) End If で、判定ができます。 そこで、 If Range("A1").MergeCells Then a = Range("A1").Value End If などとして、いったん変数に格納するのはどうでしょう? そして、 If Range("A1"),MergeCells Then a = Range("A1").Value Worksheets(2).Cells(x, y).Value = a Else この部分は、使っておられるプログラムのまま End If などとすれば、良いのではないでしょうか?
お礼
Rome_Lin様 お礼が遅くなってすみません。 教えていただいた方法でウンウン悩みながら試行錯誤していました。 セルが1つにまとめて結合されていないものは条件分岐で結合していない方に進みたいのですが、行だけは結合していたりするので、判定は「結合状態」になってしまったり・・・難しいです。 そもそもこのExcelファイルはPDFをExcelに変換したものだったのですが、他のソフトを使って再度変換してみたら、全く結合なしか、列の結合だけになったので扱いやすくなり、セルの結合を判定をしなくても済むようになりました。 もっと早く試してみればよかったです。すみません。 セルの結合の判定方法を教えていただきありがとうございました。 とても勉強になりました。
お礼
dogs_cats様 お礼が遅くなってすみません。 セル範囲を変数に格納するのですね。 詳しい解説もしていただいたおかげで理解できて、とても勉強になりました。 No.1の方のお礼にも書きましたが、PDFからExcelに変換するソフトを変えたら、セルのフォーマット?がシンプルになって結合も簡単になり、dogs_cats様に教えていただいた方法でばっちり結果を得られました。 ありがとうございました。 ちなみに、PDFからExcelに変換するソフトは、最初に「瞬間PDF変換8」を使用して、最終的には「Wondershare PDF Converter」を使用しました。 本当にありがとうございました!