人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【ExcelVBAについての質問です】

添付画像の様に、A列のセルに対してB列の同行セルが2つに分割されているデータを1つのセルに収めたいと考えております。

行削除等による対処が難しければ、別シートへの転記でも結構です。
分割されている列はB列のみとなります、行数可変です。
VBAのコードでご回答願います。(_ _)

1317918997
●拡大する

●質問者: pocon
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●150ポイント ベストアンサー
Sub test()

 For a = Range("B1").End(xlDown).Row To 2 Step -1
 If Cells(a, "A") = "" Then
 Cells(a - 1, "B") = Cells(a - 1, "B") & Cells(a, "B")
 Rows(a).Delete Shift:=xlUp
 End If
 Next a

End Sub
◎質問者からの返答

早速ありがとうございます。(_ _)


2 ● Mook
●150ポイント

A列とC列はマージされているという前提での回答ですが、下記でどうでしょうか。


マージを解除して処理をしています。想定が実際と異なる場合は、コメントください。

Sub UnmergeClenup()
 ActiveSheet.Copy after:=ActiveSheet '// シートのコピーが不要な場合はここを削除
 
 Dim lastRow As Long
 lastRow = Cells(Rows.Count, "A").End(xlUp).Row
 
 Dim r As Long
 Dim rr As Long
 Dim mrgRng As Range
 For r = lastRow To 1 Step -1
 If Cells(r, "A").MergeCells = True Then
 Set mrgRng = Cells(r, "A").MergeArea
 mrgRng.MergeCells = False
 mrgRng.HorizontalAlignment = xlLeft
 
 mrgRng.Offset(, 2).MergeCells = False
 mrgRng.Offset(, 2).HorizontalAlignment = xlLeft
 
 mrgRng.Offset(, 1).Resize(1, 1).Value = Join(Application.Transpose(mrgRng.Offset(, 1)), " ")
 mrgRng.Offset(1).Resize(mrgRng.Cells.Rows.Count - 1).EntireRow.Delete
 End If
 Next
End Sub
◎質問者からの返答

願い通りに動作致しました。また、大変勉強になりました。

ありがとうございます。(_ _)

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ