セルを結合したシートを作成しましたが、結合されたセルの値は最初のセルにのみ保存されます。とにかく、各セルで同じ値を維持するには、使用する数式にそれが必要です。ありがとう!
8 に答える
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
マクロを作成します
- Alt-F11、Ctrl-R、 menuを押して、
Insert/Module
コードを貼り付けます。 - 代わりに: Alt-F8、新しい名前を入力 (
UnmergeAndFill
など)、クリックMake
またはCreate
( ? 英語のボタンのテキストがわからない)
Alt-F8 を押してマクロを呼び出し、マクロを選択しますRun
。または、キーにマップします
選択したセルに関係なく、結合されたセルの値を直接与えるカスタム VBA 関数を使用できます。その場合、値を複製する必要はありません。
- VBA ビューに切り替える (Alt-F11)
- [挿入] > [モジュール] で新しいモジュールを作成します
- プロジェクトで、新しいモジュールを参照します (エクスプローラーのすぐ下にある (name) プロパティを介して新しい名前を付けたい場合があります)。
- モジュールに次のコードをコピーします (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
- Excelで数式を使用できるようになりました
コード:
=GetMergedValue(A1)
A1 は結合セルの一部です。
新しい列(または行)を作成し、この式を最初のセルに適用して下にドラッグできます。
列 A でセルを結合したとします (たとえば、A1:A3 と A5:A8 が結合されます)。
列 A の前に列を挿入する
A1 タイプ:
=B1
以下の式を A2 にコピーします。
=IF(B2="",A1,B2)
A2 に入力した数式を下にドラッグします
数式では、新しく作成された列を使用し、使用後に非表示にすることができます。
実際の値を別の場所に保存できませんか? 結合されたセルの代わりに?はい、数式を使用して、結合されたセルに値を表示します。
列 "A" がセルを結合したと仮定します。これを B1 に入れ、コピーして列の残りの部分を埋めます。
=IF(ISBLANK(A1);OFFSET(B1;-1;0);A1)
左側のセルに値があるかどうかをチェックし、値がある場合はその値を返し、ない場合は上のセルから値を取得します。
空のセルでは機能しないことに注意してください。最初に列「A」の空のセルを「(空)」のような一意のもので埋め、列「B」を埋めた後、「A」と「B」の両方で空に置き換えます。