- ベストアンサー
EXCEL97で、結合セルをコピー、値貼付けはできないのでしょうか
EXCEL97を使用しています。 結合セルと結合していないセルが共に含まれた範囲を指定してコピーし、別のセルに『形式を選択して貼付け』の『貼付 値』を行った場合に「この範囲には同じ操作のセル結合が必要です」とのメッセージが出て、貼付けできません。 ※ 上記の選択範囲の例 A1とB1をセル結合した上、A1:B4を範囲指定(A2:B4は通常セル) 書式設定のボタンの『←a→』という形のものを使っているのですが、95の時はセル結合機能までが付与されてなかったので、問題なかったのですが、97になって困っています。 以下のようなアイデアはありますが、それ以外に良いものはあるでしょうか。 1.セル結合した部分とセル結合していない部分を2回に分けて行う 2.上記ボタンを使用せずに、セルの書式の横位置を『選択範囲内で中央』を選択
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロを作ってみました。(同一シート内で作ってしまいました。変更は楽でしょう)結合セルを含む範囲とコピー先左上単一セルを選択(コントロールキーを使って)して実行します。 選択状態のチェック等は省いています。マクロの手順はコメントを見てください。 普通にコピーして値に変えています。ショートカットキーを割り当てると楽かもしれません。ご参考に。 ↓以下を標準モジュールに貼り付けます。 '======================================================== '結合セルを含む範囲を値複写する ' 結合セルを含む範囲とコピー先左上セルを選択して実行 ' ※複写先の範囲に結合セルがあれば解除する '======================================================== Public Sub mergeCellsValue_copy() Dim rg As Range 'セル(ワーク) Dim rgCopy As Range 'コピー元セル範囲 Dim rgPaste As Range 'コピー先左上セル 'どちらがコピー元か決める For Each rg In Selection.Areas If rg.Cells.Count = 1 Then Set rgPaste = rg Else Set rgCopy = rg End If Next 'コピー先範囲が結合されていれば解除する rgCopy.Offset(rgPaste.Row - 1, rgPaste.Column - 1).Select Selection.MergeCells = False '通常のコピーを実行 rgCopy.Copy: rgPaste.Select: ActiveSheet.Paste 'コピー先範囲を選択範囲にする rgCopy.Offset(rgPaste.Row - 1, rgPaste.Column - 1).Select 'コピー先範囲の各セルを値にする For Each rg In Selection rg = rg.Value Next End Sub
その他の回答 (1)
- sydneyh
- ベストアンサー率34% (664/1947)
>セルに『形式を選択して貼付け』の『貼付 値』を行った場合 これはあくまでも「コピーした中の「値」のみを選択して貼り付けます」という意味なので、当たり前ですがセルの書式まではペーストされません。 ちなみにこの時、コピーしたい場所を範囲指定して通常の「貼り付け」を行えば値も書式もペーストされます。「形式を選択して貼り付け」では「すべて」ですね。 ただペースト先での加工等もあるでしょうから、すべてのセル内容を貼り付けると不都合があるのなら、箇条書きの中の1番でやるのがいいと思います。これは、2番でやってもセルの書式は反映されないので、1番をやるのと同じになるからです。結局セルを結合させるか、横位置を指定するかの違いだけになるでしょう。 あと、ワークシートごとコピーしてしまい、いらない部分を削除するのも簡単ですよ。これも結局書式の加工はすることになるでしょうけどね。
お礼
#2の方の所に記載いたしましたが、ワークシートの変更の方で行いました。 ありがとうございました。
補足
言葉足りずだったと思います。 コピー元には数式が入っており、コピー先(別Book)へは、数式の計算結果の値を貼り付ける作業を行っています。これはBookの計算が余りにも重く、Bookを分けるために行っているからです。 すべてで行うと式がコピーされ、うまくありませんでした。 毎日の作業になりますから、VBAマクロの変更かワークシートにレイアウトの変更をしなければなりませんので、どれが一番楽かということを確認したかったのです。 マクロの変更の方が楽そうですので、1を選択するつもりではいます。
お礼
わざわざプロシージャーを書いていただきありがとうございました。 Selection.MergeCells = False の箇所が特に助かりました。 結局、プロシージャーを作り、ワークシートを変更することで既存のものをそのまま作ることといたしました。 ありがとうございました。