1160189862 エクセルVBAのプロの方々、次のようなマクロをお願いします。

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

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2006/10/07 11:57:44
  • 終了:2006/10/07 14:00:29

回答(3件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/10/07 12:20:17

ポイント40pt

並びかえした後、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

id:anglar

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

2006/10/07 13:14:12
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/10/07 13:34:19

ポイント20pt

表の始まりが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

id:anglar

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

2006/10/07 13:42:54
id:taknt No.3

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/10/07 13:52:15

ポイント20pt

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

最初の

b=1

b=2

にしないとダメです。


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

id:anglar

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

2006/10/07 13:59:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません