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

エクセルVBAのプロの方々、次のようなマクロをお願いします。
添付画像の通り、番号順に名前が出ている表なんですが、同じ番号、名前が続きます。何行出るかはそのときによって変わります。当然並び替えをした後,「セルを結合して中央揃え」をしますが、これが面倒です。この処理をマクロで出来ますでしょうか?よろしくお願いします。

1160189862
●拡大する

●質問者: anglar
●カテゴリ:コンピュータ
✍キーワード:エクセル セル プロ マクロ 名前
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●40ポイント

並びかえした後、Ctrl+qとしてもらえれば 結合します。

Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

b = 1

c = Range("A1")

For a = 2 To 65536

If Range("A" & a) = "" Then

Range("A" & b & ":A" & a - 1).Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

Range("B" & b & ":B" & a - 1).Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

Exit For

End If

If c = Range("A" & a) Then

Range("A" & a) = ""

Range("B" & a) = ""

Else

c = Range("A" & a)

Range("A" & b & ":A" & a - 1).Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

Range("B" & b & ":B" & a - 1).Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

b = a

End If

Next a

End Sub


http://q.hatena.ne.jp/1160189862

◎質問者からの返答

できました。凄いっすね。こんなに早くできるとは・・・!で、ついでで申し訳ないんですが、表の始まりがB2の場合、どこを直したらいいですか?


2 ● きゃづみぃ
●20ポイント

表の始まりがB2の場合は、

Range("A1") というのをB2にする。

ほか

For a = 2 To 65536

というのは 3行目からということで

For a = 3 To 65536

とします(二番目の行から開始します)

Range("A"

という箇所は

Range("B" にして (その中に入っている"A"が すべて "B")

Range("B" は Range("C" にしてもらえればいいです。

あと 65536行目は 何もないセルでないと 最後のブロックは結合されません。

ま、65536行まで使うことがないという前提で作ってありますが・・・。



http://q.hatena.ne.jp/answer

◎質問者からの返答

ありがとうございます。でも、それができません。AからCまで結合されます。どうすれば?


3 ● きゃづみぃ
●20ポイント

あ、すみません。ひとつ抜けてました。

最初の

b=1

b=2

にしないとダメです。


http://q.hatena.ne.jp/answer

◎質問者からの返答

はい、できました。かえすがえすありがとうございました。お世話になりました。

関連質問


●質問をもっと探す●



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