アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルでの質問です。
複数の連結セルがあり、それぞれ別の値が入っています。
その複数の連結セルを一括で全て連結解除した際、空白セルが出来ないように連結解除する方法はありますか。
つまりAという値が入っていた結合セル(5行×1列)には、連結解除で5行×1列全てにAという値が、Bという値が入っていた結合セル(8行×1列)には、連結解除で8行×1列全てにBという値がはいるようにしたいです。

条件は列は1列で同じ列です。
行は連結セルによって、5行だったり12行だったりまちまちです。これらを一気に連結解除し、全ての
セルに値を入れたいです。

確か以前に出来たと思うのですが、どうしてもやり方が思い出せません。
確か連結解除した後にジャンプ→セル選択だったような。ここからが思い出せません。
どうかよろしくお願いします。

A 回答 (3件)

結合セル範囲を選択


結合を解除
Ctrl+G で「ジャンプ」ダイアログ表示
Alt+S で「セル選択」から「選択オプション」ダイアログ表示
k で「空白」オプション選択
Enter で「OK」して空白セルのみを選択
最上行セルがアクティブなので例えばA2なら
空白セル範囲選択状態のまま
=A1
と上部セルの参照式を入力し編集状態のまま
Ctrl+Enter で確定
元の結合セル範囲を選択
Ctrl+C でコピー
その場で
Alt+E、S、V、Enter で「形式を選択して貼り付け」の「値」で貼り付け
    • good
    • 2
この回答へのお礼

ありがとうございます!教えていただいたやりかたで出来ました。
惜しいところまでいってたんですね。関数を使う事を失念していました。
本当にありがとうごいました。

お礼日時:2011/10/05 02:17

こんにちは!


VBAでの一例です。
各列1行目には、何かしらのデータが入っているものとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i, j, k As Long
Application.ScreenUpdating = False
For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
Cells(Rows.Count, j).End(xlUp).Offset(1) = 1
Columns(j).UnMerge
Next j
For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
k = Cells(Rows.Count, j).End(xlUp).Row
For i = 1 To k
If Cells(i, j) = "" Then
Cells(i, j) = Cells(i - 1, j)
End If
Cells(k, j).Delete (xlUp)
Next i
Next j
Application.ScreenUpdating = True
End Sub 'この行まで

※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。

参考になれば良いのですが・・・m(_ _)m
    • good
    • 0
この回答へのお礼

VBAではない方法で簡単にできる方法を探してました。
解決はしたのですが、わざわざありがとうございました。

お礼日時:2011/10/05 02:18

結合セルを解除したと同時に(1操作だけで、設定とかで)質問のようなことは出来ないでしょう。


ステップが(1)セル結合解除(2)出来た空白セルに元(左上隅セル)のセルの値をセット
を結合セル範囲の1つずつ行うのでなければ。
セル結合を解いても範囲指定は残ってくれるが、そこでジャンプーセル選択ー空白セルーOKで残りのセルを範囲指定してくれるが、次の左上隅のセルの値を貼り付ける操作が、選択できたセル範囲を崩しまう。
既に回等が出ているので、そちらをやってみてください。
ーー
こういうのはそんなに利用頻度があるのかな。こんなところへ質問している間に10箇所ぐらいなら、操作で終わると思う。
ーー
人間がやることの繰り返しをVBAでやれば出来る。しかしそこまでやるか、と思う。
少数しかテストしてないが、下記のようなもの。
標準モジュールに
Sub test01()
Dim cl
Dim a As String
For Each cl In Range("A1:D30")
If cl.MergeCells = True And cl <> "" Then
a = cl.MergeArea.Address
v = cl.Value
MsgBox v
cl.UnMerge
Range(a) = v
End If
Next
End Sub
Range("A1:D30")を適当に変えて。
    • good
    • 0
この回答へのお礼

他人が作ったデータをいじる事が多く、使い勝手が悪いデータのを使いやすい表に変換する課程で、表題のような作業が発生するんです。
しかもおっしゃる通り10カ所ぐらいなら、一つ一つ入力してコピペすればいいですが、100や200もあったらわざわざ入力するのも面倒ですので。。。
VBAはあまりわからないです(汗)
わざわざありがとうございました。

お礼日時:2011/10/05 02:23

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