
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で質問しましょう!
似たような質問が見つかりました
- その他(買い物・ショッピング) 商品にラベルを貼って出荷するまでのの手順にについて 2 2022/09/29 15:26
- 仕事術・業務効率化 副賞の賞品券の源泉徴収 2 2023/04/14 19:14
- Excel(エクセル) Excelのソート(並べ替え) 2 2022/05/15 22:54
- Excel(エクセル) エクセルでの色付け 5 2022/10/09 18:58
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Amazon Amazonの商品画像に詳しい方に質問があります。 1 2022/09/14 12:18
- 片思い・告白 女性の心理について 2 2022/10/20 14:02
- 大学・短大 至急お願いします 2 2022/04/26 13:59
- ネットスーパー 株式会社夢グループで初めて商品を購入しました。 商品購入後、1日〜2日で電話がかかってきました。電話 4 2022/10/09 19:07
- 会社経営 子会社の中で、完全子会社と子会社の違いを教えてください 完全子会社は100%出資で、子会社はそれ以外 2 2023/07/24 19:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLデータベースの処理
-
レコードの登録順がおかしい
-
テーブルレーコードをソートし...
-
Excel VBAのわかりやすい教科...
-
EXCEL 「並び替え」の誤動作に...
-
ファイルの漢数字の順番につい...
-
アクセスに関して。クエリの並...
-
Excel VBA での大文字優先ソート
-
ファイルメーカーでソート後の...
-
エクセル、並び替え正しくソー...
-
Accessでのクエリ・レポートの...
-
文字列のソート
-
ハイフンの入ったデータの並べ替え
-
月末日のみソートしたい
-
Selectした時のレコードの取得順
-
アハモから楽天モバイルに乗り...
-
where 都道府県名 and 県庁所在...
-
ORDER BY の項目を SELECT する...
-
1の行を固定した上でVBAを用い...
-
becky!での表示について質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードの登録順がおかしい
-
ファイルの漢数字の順番につい...
-
並べ替えについて
-
エクセル、並び替え正しくソー...
-
ファイルメーカーでソート後の...
-
1の行を固定した上でVBAを用い...
-
テーブルレーコードをソートし...
-
リストボックス内を昇順並べる方法
-
月末日のみソートしたい
-
accessでDISTINCT 句と矛盾
-
Excelのオートフィルタでソート...
-
SQLデータベースの処理
-
上から何番目か。
-
ソート(PL/SQL)
-
コンボボックスのソートについて
-
ハイフンの入ったデータの並べ替え
-
OracleとAccessの出力順の違い
-
MySQLで都道府県順にソート
-
並び替え
-
タイトル行を固定してソートしたい
おすすめ情報
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商品グループをソートすると見出しが下になります。ほかの設定方法か仕方があれば教えて貰えればと思います。