下記のように『結合した』セルの中に複数行のデータがあったとします。
+------+
|あいうえお   |
|かきくけこ   |
+------+
これを『結合してない』セルにペーストすると、
+------+
|あいうえお   |
+------+
|かきくけこ   |
+------+
と複数のセルに分割して、ペーストされます。

ところが、下記のように『結合していない』セルの中に複数行のデータがある場合、
+------+
|あいうえお   |
|かきくけこ   |
+------+
ペースト先が結合済みかどうかに関わらず、下記のようにペーストされます。
+------+
|あいうえお   |
|かきくけこ   |
+------+

当方、この現象をOffice97 Rro. SR-2 の Excelにて確認しております。
上記は仕様なのでしょうか? それともバグなのでしょうか?

現在、上記の現象を逆手に取ったマクロを作成しておりまして、将来的のバージョンでも保持されるものなのかを知りたかった次第です。

1)皆さんの手近にあるExcel(95/97/2000 or later)で、同様の操作をされた時の動作を確認できましたら教えて下さい。
2)私がこの現象を理解できていないのは、結合されたセルをExcelがどのような内部データ方式で管理しているのかを知らないためです。この点について、説明されたHPや書籍があったらご紹介ねがえないでしょうか?

以上、わがままな要求で恐縮ですが、宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

EXCEL97でたとえば一つのセルに


ああああ
ああああ
と複数行入力してテキスト保存してテキスト形式で開くと
"ああああ■ああああ"
と表示されています。
一つのセルの値を"で囲んで表示されるようになっていますので、
つまり、改行コードは一つの文字として認識しているということになるんではないでしょうか?

この回答への補足

arikaさん、WANKO2さんありがとうございます。
改行コードは1つの文字として認識しているという点、納得です。

ただ、それですと、もともと「結合したセル」に入っていたデータが分割されてペーストされるのは余計におかしい気がするのですが。。。

補足日時:2001/03/29 12:35
    • good
    • 0
この回答へのお礼

解答ありがとうございました。不可解なことに後日確認したところ、質問のところで書いたような現象が再現しなくなりました。
当日は社内の複数のPCで現象を確認できたのですが。。。

お騒がせして申し訳ございませんでした。

また、何かありましたらお願い致します。

お礼日時:2001/04/03 17:13

office 2kでも同じです。


複数入っているセルは、改行コードもいっしょに文字として扱っているとおもえば、よいのではないかと思います。
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Q結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法

結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法

例えば、A1~A5、A6~A10がそれぞれ結合されており、【あ】【い】という文字が
それぞれ入力されているとします。
各結合セルを解除後、各結合セルを構成していたセルにそれぞれの文字をコピーして、
A1~A5には【あ】
A6~A10には【い】という文字が入るようにしたいと思っているのですが、
実践している下記の方法だと、セル数が多いせいか時間がかかってしまいます。

(1)結合セルを全て解除
(2)For Next if文で1行目から順にセルを見て、何も入力されていなければ、
 直上のセルに入っている文字をコピーする。

そこで、下記のような方法で高速化できないか考えたのですが、記述がわかりません。
ご教授頂けますでしょうか。
または、他に高速化できる方法がありましたらお教え頂けますと幸いです。

(1)上から順に結合セルを探す。
(2)結合セルに当たったら、結合セルを構成する先頭セルと末尾セルのアドレスを変数に記憶
(3)該当の結合セルを解除
(4)記憶したら先頭セルの内容を、先頭セル直下~末尾セルまでにコピー
(5)末尾セルの直下から、(1)~(4)を繰り返す。

どうぞ、よろしくお願いいたします。

結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法

例えば、A1~A5、A6~A10がそれぞれ結合されており、【あ】【い】という文字が
それぞれ入力されているとします。
各結合セルを解除後、各結合セルを構成していたセルにそれぞれの文字をコピーして、
A1~A5には【あ】
A6~A10には【い】という文字が入るようにしたいと思っているのですが、
実践している下記の方法だと、セル数が多いせいか時間がかかってしまいます。

(1)結合セルを全て解除
(2)For Next if文で1行目から順にセルを...続きを読む

Aベストアンサー

使用範囲が少なければ、時間はそれほどかからないと思います…

Sub 結合解除()
 Dim 範囲 As Range
 Dim 結合範囲 As Range
 Dim 値 As Variant
 For Each 範囲 In ActiveSheet.UsedRange
   If 範囲.MergeCells Then
     Set 結合範囲 = 範囲.MergeArea
     値 = 範囲
     範囲.UnMerge
     結合範囲 = 値
   End If
 Next
End Sub

Q「赤黒白」を→|○|○|-|○| などと分けたい

オフィス系ソフトの超初心者です。(wikiの編集に使っています)
使っているのはLibre Office(Open Office系)です。
表の編集作業中です。

以前もお世話になったのですが、再びお知恵をお借りしたいです。

現状、A列に品名、B列にはその色が記載してあります。
例えば、A1の品に赤色、黒色、白色の3種類がある場合、B1には「赤黒白」と記載されています。
これを、赤色があればC1に「○」、黒色があればD1に「○」といったように各列に分け、丸印の有無で見分けられるようにしたいのです。

関数の内、分類項目が「文字列」のものを一通り見たのですが、これといって良い方法を思いつきません。
何か良い方法はないでしょうか?

Aベストアンサー

IF関数、ISERROR関数、FIND関数の3つの関数を使います


IF関数は条件式の真偽を判断する関数
=IF(条件式,真の場合,偽の場合)

ISERROR関数は、その式がエラーとなるか調べる関数
=ISERROR(テスト対象)

FIND関数は、セルに特定の文字列が含まれている場合に、その位置を返す関数
=FIND(検索対象文字,対象セル)

質問でやりたいことは、条件式に特定の文字列が含まれている場合に、そのセルに○か×を返したいのですから、
=IF(ISERROR(FIND("検索したい色",B1))=FALSE,"○","×")
と入力すればOKです

QVBAでの結合セルのコピー&ペースト

こんにちは。
EXCELのVBAでマクロを作成しています。
セルの値のコピー&ペーストを行おうとしているのですが、結合されているセルのペーストのときに、「同じ結合セルが必要です」とエラーになってしまいます。
例えば、A1とA2が結合されたセル+A3をコピー
Worksheets(x).Activate

Range("A1:A3").Selection
Range("A1:A3").Copy

別のシートで、B1とB2が結合されたセル+B3にペースト
Worksheets(y).Activate
Range("B1:B3").Paste


セルの結合を解除すればうまくいきます・・・
セルを結合したままペーストしたいのですが、どうやら間違っているようです(ノ_・。)
どなたか教えてください。
よろしくお願いします。

Aベストアンサー

nao_linさんこんにちは。merlionXXです。

> 値だけ貼付けのオプションをつけるとエラーになってしまうのは何故なのでしょうか?

結合セルの値貼り付けは無理のようですね。↓
http://support.microsoft.com/default.aspx?LN=JA&scid=kb;ja;JP416846

Qサイズの異なる結合セル間でのコピー&ペースト

いつもお世話になっております。

Excel 2007
Windows XP Proffessional

サイズの異なる結合セル間において、
一括して多数のコピー&ペーストをしたい場合、
何か良い方法はありますでしょうか。
(ただし、それぞれの結合セルのサイズ等は一切変更できません)

どうぞアドバイスのほどよろしくお願いします。

Aベストアンサー

下記で合っているでしょうか?
違っていたらその旨教えてください。
「コピー元左上セル」と「貼付け開始左上セル」のシート名、セル番地は実際に合わせてください。

Sub test横横複数行()
  Dim acell As Range
  Dim bcell As Range
  Dim i As Long
  Dim cn As Long

  Set acell = Sheets("Sheet1").Range("A1") 'コピー元左上セル
  Set bcell = Sheets("Sheet1").Range("A5") '貼付け開始左上セル
  Do While acell.Offset(0, i).MergeCells
    cn = cn + acell.Offset(0, i).Columns.Count
    i = i + 1
  Loop
  
  Do While bcell.MergeCells
    bcell.Resize(1, cn + 1).Value = acell.Resize(1, cn + 1).Value
    Set bcell = bcell.Offset(1, 0)
  Loop

  Set acell = Nothing
  Set bcell = Nothing
End Sub

下記で合っているでしょうか?
違っていたらその旨教えてください。
「コピー元左上セル」と「貼付け開始左上セル」のシート名、セル番地は実際に合わせてください。

Sub test横横複数行()
  Dim acell As Range
  Dim bcell As Range
  Dim i As Long
  Dim cn As Long

  Set acell = Sheets("Sheet1").Range("A1") 'コピー元左上セル
  Set bcell = Sheets("Sheet1").Range("A5") '貼付け開始左上セル
  Do While acell.Offset(0, i).MergeCells
    cn = cn + acell.Offset...続きを読む

QEXCEL97で、結合セルをコピー、値貼付けはできないのでしょうか

EXCEL97を使用しています。

結合セルと結合していないセルが共に含まれた範囲を指定してコピーし、別のセルに『形式を選択して貼付け』の『貼付 値』を行った場合に「この範囲には同じ操作のセル結合が必要です」とのメッセージが出て、貼付けできません。

※ 上記の選択範囲の例
  A1とB1をセル結合した上、A1:B4を範囲指定(A2:B4は通常セル)

書式設定のボタンの『←a→』という形のものを使っているのですが、95の時はセル結合機能までが付与されてなかったので、問題なかったのですが、97になって困っています。

以下のようなアイデアはありますが、それ以外に良いものはあるでしょうか。
1.セル結合した部分とセル結合していない部分を2回に分けて行う
2.上記ボタンを使用せずに、セルの書式の横位置を『選択範囲内で中央』を選択

Aベストアンサー

マクロを作ってみました。(同一シート内で作ってしまいました。変更は楽でしょう)結合セルを含む範囲とコピー先左上単一セルを選択(コントロールキーを使って)して実行します。
選択状態のチェック等は省いています。マクロの手順はコメントを見てください。
普通にコピーして値に変えています。ショートカットキーを割り当てると楽かもしれません。ご参考に。

↓以下を標準モジュールに貼り付けます。
'========================================================
'結合セルを含む範囲を値複写する
' 結合セルを含む範囲とコピー先左上セルを選択して実行
'  ※複写先の範囲に結合セルがあれば解除する
'========================================================
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

マクロを作ってみました。(同一シート内で作ってしまいました。変更は楽でしょう)結合セルを含む範囲とコピー先左上単一セルを選択(コントロールキーを使って)して実行します。
選択状態のチェック等は省いています。マクロの手順はコメントを見てください。
普通にコピーして値に変えています。ショートカットキーを割り当てると楽かもしれません。ご参考に。

↓以下を標準モジュールに貼り付けます。
'========================================================
'結合セルを含む範囲を値複写する
' 結...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報