Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5564 / 13645 ツリー ←次へ | 前へ→

【50078】並び替え 無糖 07/7/8(日) 7:13 質問[未読]
【50079】Re:並び替え マクロマン 07/7/8(日) 8:16 発言[未読]
【50087】Re:並び替え 無糖 07/7/8(日) 10:59 お礼[未読]
【50088】Re:並び替え 無糖 07/7/8(日) 11:04 質問[未読]
【50090】Re:並び替え 07/7/8(日) 15:51 回答[未読]
【50091】Re:並び替え 意地悪ばばぁ 07/7/8(日) 16:06 回答[未読]
【50092】Re:並び替え 意地悪ばばぁ 07/7/8(日) 16:25 発言[未読]
【50135】Re:並び替え 無糖 07/7/11(水) 7:12 お礼[未読]

【50078】並び替え
質問  無糖  - 07/7/8(日) 7:13 -

引用なし
パスワード
   左の列を右の列のようにマクロを利用して並び替えを行いたいと
考えておりますが、なかなかできません。ご教授をお願いします。
     
1       1
2       2
3       3
9       5a
10       5b
11       9
5a       10
5b       11

【50079】Re:並び替え
発言  マクロマン  - 07/7/8(日) 8:16 -

引用なし
パスワード
   とりあえずの案として、
作業列を使って、数字と文字に分けて、数字を第一キーに文字を第二キーにしてソート、
後で数字と文字を結合、でいかがでしょう?

そのうち識者からもっといい方法が提示されると思います。

【50087】Re:並び替え
お礼  無糖  - 07/7/8(日) 10:59 -

引用なし
パスワード
   トライしてみます。ありがとうございました。

追記
先日は名前を間違えてしまい、ごめんなさい。

【50088】Re:並び替え
質問  無糖  - 07/7/8(日) 11:04 -

引用なし
パスワード
   今、トライしているのですが、
具体的にはどのような記載したらよろしいでしょうか。

【50090】Re:並び替え
回答    - 07/7/8(日) 15:51 -

引用なし
パスワード
   ▼無糖 さん:こんにちは
マクロマンさん、横から失礼します。

初心者の岳と申します、ここで勉強させていただいています。
ちょっと質問のしかたが気になったので投稿させていただきました。
文字の入った値を含めてマクロで並べ替えをしたいという質問に、マクロマンさんが

とりあえずの案として、
作業列を使って、数字と文字に分けて、数字を第一キーに文字を第二キーにしてソート、
後で数字と文字を結合、でいかがでしょう?

という私のような初心者にも分かりやすい、もっともなヒントを与えて下さったのに、無糖さんは

トライしてみます とお礼を述べた後に、たった5分後に

>今、トライしているのですが、
>具体的にはどのような記載したらよろしいでしょうか。

と再質問してますよね。たった5分間で、何をトライしたのでしょうか? 
この時間が非常に気になります。

マクロは初心者でも、少しでも関数を勉強していれば、マクロマンさんのご教授は解答の方向性を教えてくれる大きな示唆だと思うんですけど。
私の場合、個々の質問に識者の方はどんな方法を考えるのかとか、自分だったらどうするかなとか思いながらここの掲示板を見ています。
(私は質問そのものの内容が、半分も理解できないレベルです)

今回のマクロマンさんの方法を私なりにやってみました。手順はいたって簡単です。全てEXCELのfx(関数の挿入)に説明があります。
(1)値が数値か文字かを判断・・・・いろんな方法があると思います
(2)数値だった、数値の部分はそのまま記載、文字の部分は空欄
(3)文字だったら、数値と文字を分けて記載

A1にデーターがあるとして
B列に  =ISNONTEXT(A1)
C列に =IF(B1=TRUE,A1,LEFT(A1,LEN(A1)-1))
D列に =IF(B1=TRUE,"",RIGHT(A1,1))

以上で、ワークシート上にデーターを数値(C列)とアルファベット(D列)に分割できます。
マクロにしたいなら、この操作を自動記録させて、部分的にコードを追加・修正すれば出来るはずです。

まずはワークシート関数をもうちょっと勉強したほうがいいのではないでしょうか。
その方がマクロを勉強するにしても理解が早いと思います。

【50091】Re:並び替え
回答  意地悪ばばぁ  - 07/7/8(日) 16:06 -

引用なし
パスワード
   こんな感じでできるのでは・・・

シートの状態
  a    b
1 項目1
2 数字
3 数字
4 数字

:数字とa
:数字とb
 
こんなレイアウトかと思いますが・・・
b列をマクロの作業列として使いますが(邪魔だったら他の作業列を使って
ください)
マクロの基本は数字に全て「0」をつけていきます。
5aは50です、5bも50です。
そしてB列でソート掛けて、B列削除・・・

Dim LastCell As Range
 Dim c As Range
 Dim cntBumon As Integer
 cntBumon = Range("A1", Cells(1, Cells.Columns.Count).End(xlToLeft)).Columns.Count

 Set LastCell = Cells(Cells.Rows.Count, 1).End(xlUp)
 For Each c In Range("A2", LastCell)
  If Right(c.Value, 1) = "a" Or Right(c.Value, 1) = "b" Then
   c.Offset(, cntBumon).Value = Mid(c.Value, 1, Len(c.Value) - 1) & "0"
   
  Else
   c.Offset(, cntBumon).Value = c.Value & "1"
  End If
 Next
 Range("A1", LastCell).Resize(, cntBumon + 1).Sort Key1:=Cells(2, cntBumon + 1), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    SortMethod:=xlPinYin
 Range("A1", LastCell).Offset(, cntBumon).ClearContents


 

【50092】Re:並び替え
発言  意地悪ばばぁ  - 07/7/8(日) 16:25 -

引用なし
パスワード
   表現が間違っていました・・・
数字には1をアルファベット(a,b)には0を引っ付けているのでした。
だからB列は
11
21
31
91
101
111
50
50
と、数字が並ぶはずです・・・ステップインで見てください。

【50135】Re:並び替え
お礼  無糖  - 07/7/11(水) 7:12 -

引用なし
パスワード
   成功しました。
ご指導をいただいた皆様に対し、本当にありがとうございました。

5564 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free