セルを結合したシートを作成しましたが、結合されたセルの値は最初のセルにのみ保存されます。とにかく、各セルで同じ値を維持するには、使用する数式にそれが必要です。ありがとう!
Excel 2003では、このマクロが機能します。
Public Sub UnmergeAndFill()
With Selection
If .MergeCells Then
.MergeCells = False
Selection.Cells(1, 1).Copy
ActiveSheet.Paste 'Or PasteSpecial xlPasteFormulasAndNumberFormats
End If
End With
End Sub
次の方法でマクロを作成します
Insert/Module
、コードを貼り付けます。UnmergeAndFill
など)を入力し、Make
またはCreate
(をクリックしますか?英語のボタンのテキストがわかりません)Alt-F8を押してマクロを起動し、Run
を選択します。または、キーにマップします
これはかなり古い質問だと思いますが、答えを探すときに最初に着陸した場所であり、受け入れられた答えはまったく役に立ちませんでした。 I DID優れた答えを見つけましたが、MrExcelで、答えを探している他の人の利益のためにこのスレッドを置く価値があると思いました。
http://www.mrexcel.com/forum/general-Excel-discussion-other-questions/487941-data-multiple-cells-within-merged-cell-possible.html ==
リンクを探す手間を省くために、答えは非常に簡単です。セルの結合ではなく、Excel形式ペインタを使用してセルを結合すると、結合されたセルの「基礎となる」データ/数式が保持されます。 Format Painterのテンプレートとして使用するには、適切な形式で一時的に結合されたセルのブロックを別の場所に作成する必要があります。後で削除できます。ただし、注意すべき点の1つは、表示されているセルを編集しても非表示のセルは変更されないため、このような「非表示」のデータが不注意の罠になる可能性があることです。
新しい列(または行)を作成し、この数式を最初のセルに適用して下にドラッグできます。
列Aでセルを結合したと仮定します(たとえば、A1:A3とA5:A8が結合されます)。
列Aの前に列を挿入します
A1タイプの場合:
=B1
以下の式をA2にコピーします。
=IF(B2="",A1,B2)
A2に入力した数式uを下にドラッグします
数式では、新しく作成した列を使用し、使用後に非表示にすることができます。
選択したセルに関係なく、マージされたセルの値を直接提供するカスタムVBA関数を使用できます。その場合、値を複製する必要はありません。
コード:
Option Explicit
Function GetMergedValue(location As Range)
If location.MergeCells = True Then
GetMergedValue = location.MergeArea(1, 1)
Else
GetMergedValue = location
End If
End Function
コード:
=GetMergedValue(A1)
ここで、A1はマージされたセルの一部です。
実際の値を別の場所に保存することはできませんか?マージされたセルの代わりに?はい、数式を使用して、結合されたセルに値を表示します。
列「A」がセルをマージしたと仮定します。これをB1に配置し、コピーして列の残りの部分を埋めます。
=IF(ISBLANK(A1);OFFSET(B1;-1;0);A1)
左側のセルに値があるかどうかをチェックし、値がある場合は値を返します。ない場合は、上のセルから値を取得します。
空のセルでは機能しないことに注意してください。まず、列「A」の空のセルを「(空)」などの一意のセルで埋め、列「B」を埋めた後、「A」と「B」の両方で空のセルに戻します。
Seheのマクロを改善して、選択した数のマージされたセルを実行しました。
コード:
Public Sub UnmergeAndFillMultiple()
Dim w As Range, m As Range, n As Range
For Each w In Selection.Cells
If w.MergeCells Then
Set n = w.MergeArea.Cells(1, 1)
Set m = w.MergeArea
w.MergeCells = False
n.Copy
m.PasteSpecial
End If
Next
End Sub