
No.7ベストアンサー
- 回答日時:
No5です。
コメントを付加しました。'a商品が選択された場合、ソート時に
'.Range("A2:E5").Sort key1:=.Range("B2"), Order1:=xlAscending
'となるようなソートをすることが目的
Private Sub CommandButton1_Click()
Dim zaiko As String
'商品を取り出す(a商品を取り出したと仮定して、コメントを付加)
zaiko = ListBox1.List(ListBox1.ListIndex, 0)
Dim st As Long, en As Long, wrow As Long
With ActiveSheet
'2行から最終行まで繰り返す
For wrow = 2 To .Cells(Rows.count, 1).End(xlUp).Row
'取得した商品とA列の商品が同じなら以下の処理を行う
If zaiko = .Cells(wrow, 1).Value Then
If st = 0 Then st = wrow '最初に出現したならstにその行を記憶するの最初の行が設定される
en = wrow 'enにその行を記憶(毎回更新するので最後の行が設定される)
End If
Next
'上記の結果、st=2 en=5 となる
If st <> 0 Then
Dim srg As String, krg As String
'srgへ"A2:E5"の文字列を設定する為に以下の処理をする
srg = "A" & st & ":E" & en
'krgへ"B2"の文字列を設定する為に以下の処理をする
krg = "B" & st
.Range(srg).Sort key1:=.Range(krg), Order1:=xlAscending
End If
End With
End Sub
No.6
- 回答日時:
検証はしてないので間違ってたらスル~っと流してください。
多分こんな短くて済む訳ないですよね・・・
Dim r As Range
With ActiveSheet
Set r = .Range("A2", .Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeConstants)
r.Areas(ListBox1.ListIndex + 1).Resize(, 5).Sort Key1:=r.Cells(1, 1).Offset(, 1), Order1:=xlAscending
End With
No.5
- 回答日時:
No3です。
見出し行の下に1行空白を入れたくないなら(現行のフォーマット通りにしたいなら)
以下のようにしてください。
Private Sub CommandButton1_Click()
Dim zaiko As String
zaiko = ListBox1.List(ListBox1.ListIndex, 0)
Dim st As Long, en As Long, wrow As Long
With ActiveSheet
For wrow = 2 To .Cells(Rows.count, 1).End(xlUp).Row
If zaiko = .Cells(wrow, 1).Value Then
If st = 0 Then st = wrow
en = wrow
End If
Next
If st <> 0 Then
Dim srg As String, krg As String
srg = "A" & st & ":E" & en
krg = "B" & st
.Range(srg).Sort key1:=.Range(krg), Order1:=xlAscending
End If
End With
End Sub
ありがとうございました。うまくいきました。できれば、マクロに解説つけて貰えませんか。srgソート範囲 krgはソートキー wrowの探し方よくわかりません。
No.4
- 回答日時:
こんにちは
問題点が2つありそうに思います。
・範囲を取得する際に、CurrentRegionで取得しているので、タイトル行に隣接している2行目からのグループはタイトル行を含んでしまいます。
(これが、ご質問になっていることの原因と思います)
・実際には、ご提示のコードでは使用していませんが・・・
>With r.End(xlDown)
End(xlDown)でグループの最後を取得するのは良い案だとは思いますが、グループが1行しかない場合には、次のグループの先頭までを選んでしまいます。
対策としては・・
◇ タイトル行の下に1行の空白行を設けることにすれば、ご提示のままのコードでもいけると思います。
◇ レイアウトをご提示のようにしたければ、Findで取得した行から次の空白行までをきちんと探すことが必要になるでしょう。
(以下では、ソートの対象をA:E列と仮定しました)
>If Not r Is Nothing Then
以降を修正します。
・同じようにFindメソッドで空白セル探すのなら、
Set r2 = Range("A:A").Find(What:="", after:=r)
Range(r, r2.Offset(-1)).Resize(, 5).Sort _
Key1:=r.Offset(, 1), Order1:=xlAscending
・あるいは、順に空白行までを走査するなら、
For i = 1 To Rows.Count
If r.Offset(i).Value = "" Then Exit For
Next i
r.Resize(i, 5).Sort Key1:=r.Offset(, 1), Order1:=xlAscending
No.2
- 回答日時:
現在は、具体的には、どのようなマクロで、ソートしていますか。
a商品のソートならA2:E5をソート範囲にすれば良いかと。
b商品のソートならA8:E11
c商品のソートならA14:E16 になります。
No.1
- 回答日時:
おはようございます。
直接の回答ではありませんが、
どの様なマクロで結果がどの様になっているかの説明が必要かと思います。
それがあれば、良い回答が付くかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
マクロで列を加えたら上手くいかなくなりました。
Excel(エクセル)
-
マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。
Excel(エクセル)
-
Excelのセル上の日付の不具合
Excel(エクセル)
-
4
エクセル 可視セル部の数値の抜き出し方法
Excel(エクセル)
-
5
グループの最後の行に書式、計算式なども同じ行を追加するマクロを教えてもらえませんか。
Excel(エクセル)
-
6
EXCELでの複雑な複数条件について
Excel(エクセル)
-
7
独自の条件を用いた計算式、もしくは別の方法で打ち出す事は可能でしょうか?
Excel(エクセル)
-
8
エクセルで複数のコメントのサイズ(形)を一括で変える方法
Excel(エクセル)
-
9
VBA 表示を参照図のように編集するには
Excel(エクセル)
-
10
エクセル表作成についてお分かりになる方教えて下さい。 10項目程度のエクセルデーターを一件、一件、デ
Excel(エクセル)
-
11
2つのVBAを一緒にしたら機能しなくなりました(エクセル)
Excel(エクセル)
-
12
【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式
Excel(エクセル)
-
13
エクセルはマクロを使用するのでパソコンに良くないので使用しないでと言われた。「なぜ?」
Excel(エクセル)
-
14
Excel マウスなし操作の質問
Excel(エクセル)
-
15
数式の置換がうまく行かない
Excel(エクセル)
-
16
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
17
エクセル マクロでマクロ名が変わってしまってエラーになります
Excel(エクセル)
-
18
Excelの複数置換はSUBSTITUTEを重ねるしかない?
Excel(エクセル)
-
19
エクセルでこういうものを作りたいです。
Excel(エクセル)
-
20
セル内で自分の好きなところで改行したいのですが、数式が入って無理なんです。 「折り返して全体表示」し
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Selectした時のレコードの取得順
-
5
1の行を固定した上でVBAを用い...
-
6
エクセルのソートの繰り返し作...
-
7
エクセルの縦列のソートできま...
-
8
Excelの並び替え(文字数と画数...
-
9
ORDER BY の項目を SELECT する...
-
10
レコードの登録順がおかしい
-
11
Excelで作成した円グラフのデー...
-
12
テーブルレーコードをソートし...
-
13
文字型の順番がうまく並ばない。
-
14
エクセルのソート機能について
-
15
アクセスに関して。クエリの並...
-
16
ファイルメーカーでソート後の...
-
17
MySQLで保存できる限界行数
-
18
大きいデータ数のテーブルに対...
-
19
Excelのオートフィルタでソート...
-
20
Windowsでファイル名でソートさ...
おすすめ情報
公式facebook
公式twitter
Private Sub CommandButton1_Click()
zaiko = ListBox1.List(ListBox1.ListIndex, 0)
With ActiveSheet
Set r = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) _
.Find(What:=zaiko, LookIn:=xlValues, LookAt:=xlWhole, After:=Cells(Rows.Count, 1).End(xlUp))
End With
If Not r Is Nothing Then
With r.End(xlDown)
Call r.CurrentRegion.Sort(Key1:=r.Offset(, 1), Order1:=xlAscending)
End With
End If
End
ユーザーホームのテキストボックスで指定した商品のグループのみ日付順にソートします。
現在 見出しを含めるとしていますので、A商品グループをソートすると見出しが下になります。ほかの設定方法か仕方があれば教えて貰えればと思います。