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

【Excel/VBA】についての質問です。

並び替えしている任意列の中で列方向同じ値のセルを結合するマクロをお願いします。


1287488322
●拡大する

●質問者: pocon
●カテゴリ:コンピュータ
✍キーワード:Excel セル マクロ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Silvanus
●70ポイント ベストアンサー

こんな感じでいかがでしょうか。

"SelectCol"を実行して下さい。

マクロ実行時にセレクトされているセル(複数選択されている場合は一番右上のセル)の

列を処理の対象としています。

Option Explicit

Sub SelectCol()

 Hatena_pocon_101019 Selection.Column

End Sub

Sub Hatena_pocon_101019(lngCol As Long)

Dim lngRowLst As Long
Dim lngRowCnt As Long
Dim lngRowGrp As Long

lngRowLst = Cells.SpecialCells(xlCellTypeLastCell).Row
lngRowCnt = 1
 Do
 If Application.CountA(Cells(lngRowCnt, lngCol)) > 0 Then
 lngRowGrp = lngRowCnt
 Do While Cells(lngRowGrp, lngCol).Value _
 = Cells(lngRowCnt + 1, lngCol).Value
 lngRowCnt = lngRowCnt + 1
 Loop
 Application.DisplayAlerts = False
 Range(Cells(lngRowGrp, lngCol), Cells(lngRowCnt, lngCol)).Merge
 Application.DisplayAlerts = True
 End If
 lngRowCnt = lngRowCnt + 1
 Loop Until lngRowCnt > lngRowLst

End Sub
◎質問者からの返答

アタシにゃ能力及ばず全くもって解析できませんでしたが

動作はバッチリでした。ありがとうございました。


2 ● spyglass
●70ポイント

"macro"を実行してください。

x,y,zにはそれぞれ初期値を入れてくださいね。

=========== ここから以下macro ===============

Sub Macro()

x = 1: '横開始セル

y = 2: '縦開始セル

z = 14: '結合最終セル

Do

yy = 1

Do While Range(Cells(y, x), Cells(y, x)).Value = Range(Cells(y + yy, x), Cells(y + yy, x)).Value

Range(Cells(y + yy, x), Cells(y + yy, x)).Value = ""

yy = yy + 1

Loop

yy = yy - 1

Range(Cells(y, x), Cells(y + yy, x)).Select

Selection.MergeCells = True

y = y + yy + 1

Loop While z > y

Range("A1").Select

End Sub

◎質問者からの返答

なるほどなるほど。

勉強になります。ありがとうございました。

関連質問


●質問をもっと探す●



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