こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのマクロ(VBA)について質問です。

前回もお世話になりました。今回もまた、VBAの質問です。

ある表があります。
A「No.」B「氏名」C「フリガナ」(D「順番」)という項目があります。
項目名はそれぞれ2行目にあります。
データ入力は3行目からで(セルA3)、入力範囲は32行分です。
毎回32名分すべてにデータが入っていればやりやすいのですが、
31名以下の場合に問題があります。
フリガナ順に並べ替える時に、「データ」→「並べ替え」で「フリガナ」項目を
昇順で並べ替えていますが、この時、セルA3からセルC34までを
範囲指定して上記方法で並べ替えると、入力されていない空白の行までも
並べ替えられてしまい、その空白行が先頭から並べ替えられてしまいます。
そういったわけで、現状ではセルA3から入力されている一番下の
データのC列(25名分登録ならセルC27)までを手動で範囲指定し
上記並べ替えを行なっています。
空白行を除いて、入力したデータ分だけ並べ替えたいのですが、
まったくわかりません。

これを何とかVBAで解決したく、質問をさせて頂きます。
お知恵を頂きたく思いますので宜しくお願い致します。
情報が不足でしたら、補足要求をお待ちします。

投稿日時 - 2009-09-08 15:16:08

QNo.5272887

困ってます

質問者が選んだベストアンサー

こんにちは。

最初に、VBAのコードが必要ないようでしたら、それはかまわないのですが、今回のコードは、前回、必要とされなかったコードを一行抜けばすむはずです。

以下は、A列のデータの最後までを範囲にしています。
.Range("A2", .Cells(Rows.Count, 1).End(xlUp))

'-------------------------------------------

Sub TestMacro1()
With ActiveSheet
 With .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
   If .Rows.Count < 2 Then Exit Sub 'データがない場合は除外
   .Resize(, 3).Sort Key1:=.Range("C1"), _
            Order1:=xlAscending, _
            Header:=xlYes
 End With
End With
End Sub

投稿日時 - 2009-09-08 15:50:02

お礼

手元にパソコンが無い為、未だ試せていませんが、
(携帯から返信しております)頂いたものを後ほど試してみます。
ありがとうございました!

投稿日時 - 2009-09-08 16:26:40

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

解答No3です。
C3への入力の式は次のようにしてください。
=IF(B3="","ン",PHONETIC(B3))

投稿日時 - 2009-09-08 16:37:28

ANo.3

マクロを使わなくてもフリガナを表示させるC列について入力の式を工夫すればよいでしょう。
C3セルに次の式を入力しC34セルまでオートフィルドラッグします。
=IF(C3="","ン",PHONETIC(C3))
これでB列で空の行にはンが表示されますので今まで同様にC列から昇順で何の問題もおきません。なお、ンの表示が目障りでしたら、C3からC34セルの条件付き書式でンのフォントの色を白に設定すればよいでしょう。

投稿日時 - 2009-09-08 16:34:05

ANo.1

マクロ記録でもいいので、コードはありますか?
もしよければ、コードを見せていただきたいのですが……。

投稿日時 - 2009-09-08 15:32:08

お礼

申し訳ありません、まだマクロを作る前の段階で、
「これじゃ思い通りに出来ない」と半ば諦めてしまってました。。
申し訳ありませんが、そういう次第でコードは存在しません。
ありがとうございます。

投稿日時 - 2009-09-08 16:24:34

あなたにオススメの質問