Note: The other languages of the website are Google-translated. Back to English

Excelのヘッダーをクリックして列データを並べ替える方法は?

ある範囲のデータがあるとします。次に、列ヘッダーをクリックしてデータを昇順または降順で並べ替え、次のスクリーンショットを表示します。 この仕事をExcelでどのように解決できますか?

クリックによるドキュメントの並べ替え1

VBAコードを含む列ヘッダーをクリックしてデータを並べ替えます


矢印青い右バブル VBAコードを含む列ヘッダーをクリックしてデータを並べ替えます

通常、Excelでは、並べ替え機能を適用してデータをすばやく簡単に並べ替えることができますが、セルをクリックするだけでデータを並べ替えるには、次のVBAコードを使用すると便利です。

1。 セルをクリックしてデータを並べ替えるシートタブを右クリックし、 コードを表示 コンテキストメニューから、開いた状態で アプリケーション用のMicrosoftVisual Basic ウィンドウで、次のコードをコピーして空のモジュールに貼り付けます。

VBAコード:セルまたは列ヘッダーをクリックしてデータを並べ替えます。

Public blnToggle As Boolean
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
'Updateby Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange As Range
LastColumn = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
If keyColumn > LastColumn Then Exit Sub
Application.ScreenUpdating = False
Cancel = True
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
Set SortRange = Target.CurrentRegion
blnToggle = Not blnToggle
If blnToggle = True Then
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlYes
Else
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlYes
End If
Set SortRange = Nothing
Application.ScreenUpdating = True
End Sub

クリックによるドキュメントの並べ替え2

2。 次に、コードウィンドウを保存して閉じます。データ範囲内のセルまたは列ヘッダーをダブルクリックすると、列が昇順で並べ替えられます。もう一度ダブルクリックすると、列が一度に降順で並べ替えられます。


その他の関連記事:

セルをクリックしてセル値を変更するにはどうすればよいですか?

Excelでセルの内容をクリックするだけでデータをフィルタリングするにはどうすればよいですか?


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (8)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
上昇しても問題なく動作します。下降すると述べられているように、2回目のダブルクリックは何もしません。
このコメントは、サイトのモデレーターによって最小化されました
動作しません、何も起こりません、vbaでモジュールを作成する方法を知っています、それをしました、保存されました、そしてヘッダーがダブルクリックされたとき何もありません。 修正してください。
このコメントは、サイトのモデレーターによって最小化されました
クラッカージャックはできません-動作しません
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、ロブ、上記のコードは私のExcelでうまく機能します。ここで、問題のスクリーンショットを提供できますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
der Code funktioniert auch gutbeimir。 Allerdingswürdeichgernedieoberen beiden Zeilen nicht mit sortieren、dadiesedieÜberschriftensind。
Wie muss ich dann diesenCodeändern?

ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは友人、
必要なVBAは次のとおりです。

Public blnToggle As Boolean
プライベートサブワークシート_BeforeDoubleClick_
(ByVal Target As Range、Cancel As Boolean)
'Updateby Extendoffice
Dim LastColumn As Long、keyColumn As Long、LastRow As Long
範囲としての薄暗いSortRange
最後の列 = _
Cells.Find(What:= "*"、After:= Range( "A1")、_
SearchOrder:= xlByColumns、SearchDirection:= xlPrevious).Column
keyColumn = Target.Column
keyColumn> LastColumnの場合、Subを終了します
Application.ScreenUpdating = False
キャンセル= True
LastRow = Cells(Rows.Count、keyColumn).End(xlUp).Row
エラーで次の再開
SortRange=Target.CurrentRegionを設定します
ディム・アイ・アス・ロング
I = 2
SortRange = SortRange.Offset(i、0)を設定します
SortRange = SortRange.Resize(SortRange.Rows.Count --i、SortRange.Columns.Count)を設定します
blnToggle=blnToggleではありません
blnToggle=Trueの場合
SortRange.Sort _
Key1:= Cells(2、keyColumn)、Order1:= xlAscending、Header:= xlNo

SortRange.Sort _
Key1:= Cells(2、keyColumn)、Order1:= xlDescending、Header:= xlNo
終了する場合
SortRange=Nothingを設定します
Application.ScreenUpdating = True
End Subの


3行のヘッダーがある場合は、VBAで「i=2」を「i=3」に変更するだけです。 それが役に立てば幸い。 すてきな一日を。

敬具
マンディ
このコメントは、サイトのモデレーターによって最小化されました
こんにちはマンディ/すべて、

セルではなくヘッダーがダブルクリックされたときにのみソートするようにコードを変更することは可能ですか?

最後までお読みいただき、ありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
問題を解決するには、以下のコードを適用してください。
Public blnToggle As Boolean
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
'Updateby Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange As Range
Dim xAddress As String
Dim xRgI As Range
xAddress = "A1:E2" 'The headers
Set xRgI = Intersect(Range(xAddress), Target)
If xRgI Is Nothing Then Exit Sub
LastColumn = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
If keyColumn > LastColumn Then Exit Sub
Application.ScreenUpdating = False
Cancel = True
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
On Error Resume Next
Set SortRange = Target.CurrentRegion
Dim i As Long
i = 2
Set SortRange = SortRange.Offset(i, 0)
Set SortRange = SortRange.Resize(SortRange.Rows.Count - i, SortRange.Columns.Count)
blnToggle = Not blnToggle
If blnToggle = True Then
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlNo
Else
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlNo
End If
Set SortRange = Nothing
Application.ScreenUpdating = True
End Sub



試してみてください。お役に立てば幸いです。
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護