web-dev-qa-db-ja.com

各セルのマージされたセルの値を保持するにはどうすればよいですか?

セルを結合したシートを作成しましたが、結合されたセルの値は最初のセルにのみ保存されます。とにかく、各セルで同じ値を維持するには、使用する数式にそれが必要です。ありがとう!

7
Kinshuk

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

次の方法でマクロを作成します

  1. 押す Alt-F11、 Ctrl-R、メニューInsert/Module、コードを貼り付けます。
  2. または: Alt-F8、新しい名前(UnmergeAndFillなど)を入力し、MakeまたはCreateをクリックしますか?英語のボタンのテキストがわかりません

Alt-F8を押してマクロを起動し、Runを選択します。または、キーにマップします

7
sehe

これはかなり古い質問だと思いますが、答えを探すときに最初に着陸した場所であり、受け入れられた答えはまったく役に立ちませんでした。 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つは、表示されているセルを編集しても非表示のセルは変更されないため、このような「非表示」のデータが不注意の罠になる可能性があることです。

2
Knackiedoo

新しい列(または行)を作成し、この数式を最初のセルに適用して下にドラッグできます。

列Aでセルを結合したと仮定します(たとえば、A1:A3とA5:A8が結合されます)。

  1. 列Aの前に列を挿入します

  2. A1タイプの場合:

    =B1
    
  3. 以下の式をA2にコピーします。

    =IF(B2="",A1,B2)
    
  4. A2に入力した数式uを下にドラッグします

数式では、新しく作成した列を使用し、使用後に非表示にすることができます。

1
Nima

選択したセルに関係なく、マージされたセルの値を直接提供するカスタムVBA関数を使用できます。その場合、値を複製する必要はありません。

  1. VBAビューに切り替えます(Alt-F11)
  2. [挿入]> [モジュール]を使用して新しいモジュールを作成します
  3. プロジェクトで、新しいモジュールを参照します(エクスプローラーのすぐ下にある(name)プロパティを使用して新しい名前を付けたい場合があります)
  4. モジュールに次のコードをコピーします(ThisWorkbookにコードを貼り付けることはできません)

コード:

Option Explicit

Function GetMergedValue(location As Range)
    If location.MergeCells = True Then
        GetMergedValue = location.MergeArea(1, 1)
    Else
        GetMergedValue = location
    End If
End Function
  1. これで、Excelで数式を使用できます

コード:

=GetMergedValue(A1)

ここで、A1はマージされたセルの一部です。

1
takje

実際の値を別の場所に保存することはできませんか?マージされたセルの代わりに?はい、数式を使用して、結合されたセルに値を表示します。

0
DAEMYO

列「A」がセルをマージしたと仮定します。これをB1に配置し、コピーして列の残りの部分を埋めます。

=IF(ISBLANK(A1);OFFSET(B1;-1;0);A1)

左側のセルに値があるかどうかをチェックし、値がある場合は値を返します。ない場合は、上のセルから値を取得します。

空のセルでは機能しないことに注意してください。まず、列「A」の空のセルを「(空)」などの一意のセルで埋め、列「B」を埋めた後、「A」と「B」の両方で空のセルに戻します。

0
plavozont

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
0
Darrel Belvin