VBAで開発された次のユーザーフォームがあります。これは、情報を表示するためのワークシートから情報を取得します
私はすべての情報をセグメントごとに無秩序に注文したい、これはコードです:
Function llenarDatosTabla()
Dim vList As Variant
Dim ws As Worksheet: Set ws = Worksheets(BD_PRODXSIST)
ListBox1.Clear
With ws
If (IsEmpty(.Range("AA2").Value) = False) Then
Dim ultimoRenglon As Long: ultimoRenglon = devolverUltimoRenglonDeColumna("A1", BD_PRODXSIST)
vList = ws.Range("AA2:AA" & ultimoRenglon & ":AL2").Value
If IsArray(vList) Then
Me.ListBox1.List = vList
Else
Me.ListBox1.AddItem (vList)
End If
End If
Me.ListBox1.ListIndex = -1
End With
Set vList = Nothing
Set ws = Nothing
End Function
「AD」(SEGMENTO)列で並べ替える方法???
次のようなVBAステートメントを使用して、Excelワークシートを昇順で並べ替えることができます。
_Columns("A:XFD").Sort key1:=Range("AD:AD"), order1:=xlAscending, Header:=xlYes
_
注:XFD
の代わりにColumns("A:XFD")
列範囲に、あなたのケースに関連する最後に使用された列を入力します。 Columns("A:DD")
。
これが役立つことを願っています。
データテーブルを並べ替えるには、CurrentRegion関数と共にExcel Namesを使用します。これは、列参照をハードコーディングするよりもリスクが少なく、2つの簡単な手順で実行できます。
列を指定する方が望ましい理由は、列を間違えたり、後で変更したりすると、データがスクランブルされるためです!並べ替えを実行すると、省略された列のセルはそのまま残り、間違った行の一部になります。そして、これは、VBAを更新することを忘れない限り、後で列を追加した場合に発生することです。
このアプローチを使用するための2つの簡単な手順を次に示します。この例では、4つの列と4つの行を持つデータテーブルを選択しました。
COL3降順でソートします。他の3つの列のセルは同じ値を共有するため、すべてのセルが正しい行にとどまっていることを簡単に確認できます。
ステップ1:永続的にする列のヘッダーなど、削除される可能性が低いデータテーブル内のセルを選択し、このセルの名前を定義します。名前を定義するには、セルを選択し、ワークシートの上にあるExcelの[名前]ドロップダウンに直接入力します。ここでは、RegionTagという名前を使用しました。
すぐに、CurrentRegionはこれからデータテーブル全体を参照できます。 VBAの行をコーディングしてテーブルを選択すると、実際の動作を確認できます。
Range("RegionTag").CurrentRegion.Select
これが結果です:
これは単なる説明のためであり、Name/CurrentRegionの組み合わせの威力を示しています。ソートするためにテーブルを選択する必要はありません。
ステップ2:2番目の名前を定義します。今回は、並べ替えの対象となる列に対して:
名前が列のセル範囲だけでなく、列ヘッダーをクリックして選択した列全体を参照していることを確認してください。
それでおしまい!これら2つの名前を定義すると、後でさらに追加された場合でも、行と列を意識せずにデータテーブルを並べ替えることができます。
Range("RegionTag").CurrentRegion.Sort _
key1:=Range("SortCol"), order1:=xlDescending, Header:=xlYes
上記のステートメントを使用してソートされたデータテーブルを次に示します。