エクセルでA列下に各商品名項目が下にずらっと並んでいて、またエクセル1行目の右横に各お客さん名項目がずらっと並んでいて、たとえば ある患者さんが(例 ○○さん:D1)がある商品
(例 △△:A15)を 5個、 他のある商品(例 ◇◇:A20)を12個を購入したため それぞれのセルを探して(D15)に5、(D20)に12と2種類の商品の数量を入れ込んでおいた状態で、D2セルをダブルクリックすることで見やすくするために商品項目名のA列と今回の患者さんのD列を残し、他の列をみえなくし、かつ上からDさんの購入した各商品の数量順に見やすく上から下に並べ替えられることできませんでしょうか。
この前はD1セルをダブルクリックすることで商品項目とD列だけ残すことは教わりましたが、今度は購入した商品が配置上 上と下ではなれてしまっている場合 見ずらいのでソートしたらいいのではということを考えて 教えを賜りたく質問いたしました。(VBAで)
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
前回、トグルと書いたのは、例えば、他の列が隠れた後に、同じダブルクリックをすると、元に戻るような仕組みを、今度はソートにも同じように戻るように、取り付けなくてはならないということです。つまり、2つの仕様を組み合わせると、それが混じり合わないようにしなくてはならないことです。前回のレベルよりも格段と難しくなります。
このコードは、前回のコードを上書きしてもらうことになります。
●仕様と仕組み
Excelには、ソートすることは可能でも、戻すのはできませんから、どこかに順序を記録する必要があります。
データ群に隣接する右端の1行目に、セル番地をマクロに書き込みます。(図を参照)
前回と同じで、氏名をダブルクリックすれば、その列だけになり、2行目をダブルクリツクすれば、ソートされ、もう一度同じ場所をダブルクリックすれば、元に戻ります。
No.2 さんの2行目に戻るの場合、氏名以外の列をダブルクリックする方式に変えることは可能ですが、それは、質問者さんのリクエストではありませんので、割愛します。とにちかく、作ってしばらくはサポートは可能ですが、ややこしいです。
'//シートモジュール
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim CRng As Range
Dim Rng As Range
Dim lastCell As Range
Dim ReSort As Range
Dim t As Long
t = Cells(Rows.Count, 1).End(xlUp).Row
Cancel = True
If Target.Value Like "[1!]" Then Exit Sub
'*******************
'ソートフラグ(必ず、データ範囲の横、行目に入れてください)
Set ReSort = Range("AF1")
'*******************
Set CRng = Range("B1", Cells(1, Columns.Count).End(xlToLeft))
Set Rng = Range("A1").CurrentRegion
'復帰用
With ReSort.Resize(t)
If Not ReSort.Value Like "[1!]" Then
.Formula = "=ROW()"
.Font.ColorIndex = 2
.Value = .Value
End If
End With
If Target.Row = 1 Then
If ReSort.Value = "!" Then
MsgBox "2行目ダブルクリックで並べ替えを戻さないと、元に戻りません。", vbExclamation: Exit Sub
ElseIf Target.Offset(, -1).EntireColumn.Hidden Or Target.Offset(, 1).EntireColumn.Hidden Then
Rows(1).EntireColumn.Hidden = False
Else
CRng.EntireColumn.Hidden = True
Target.EntireColumn.Hidden = False
End If
Application.Goto Range("A1")
ElseIf Target.Row = 2 And Target.Column > 1 And _
Target.Offset(, -1).EntireColumn.Hidden _
Or Target.Offset(, 1).EntireColumn.Hidden Then
If Target.Offset(-1).Value <> "" And _
ReSort.Value <> "!" Then
Rng.Sort _
Key1:=Target.Offset(-1), _
Order1:=xlDescending, _
Header:=xlYes, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
ReSort.Value = "!" 'ソートフラッグ
Else
ReSort.EntireColumn.Hidden = False '復元ソート
Rng.Sort _
Key1:=ReSort, _
Order1:=xlAscending, _
Header:=xlYes, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
ReSort.Value = "" 'ソートフラッグ
End If
End If
End Sub
No.2
- 回答日時:
「D2セルをダブルクリックすると」ということですが、例えば、D182にロキソニンの個数を入力した後、未入力行を非表示にするために「D2が見えるところまでスクロールしてダブルクリック」では、面倒くさいですよね?まずは、どんなUIにすべきか、もう一度、考えた方が良いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) エクセルの表について 3 2023/04/14 18:00
- Excel(エクセル) エクセルでの色付け 5 2022/10/09 18:58
- Excel(エクセル) エクセルデーターの並び替え 5 2022/08/06 09:59
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードの登録順がおかしい
-
並べ替えについて
-
1の行を固定した上でVBAを用い...
-
ソート。内容の一部を置換して...
-
ピボットテーブルを複数項目で...
-
月末日のみソートしたい
-
Excel VBA での大文字優先ソート
-
アクセスに関して。クエリの並...
-
エクセル、並び替え正しくソー...
-
SQLで曜日のソートを月火水木金...
-
where 都道府県名 and 県庁所在...
-
テーブルレーコードをソートし...
-
Selectした時のレコードの取得順
-
文字列のソート
-
上から何番目か。
-
ORDER BY の項目を SELECT する...
-
2つの列を合わせてソートしたい。
-
SELECT文のソート条件
-
数字と漢字が混じった日付デー...
-
単一グループのグループ関数で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのソートについて
-
テーブルレーコードをソートし...
-
エクセル、並び替え正しくソー...
-
DOSでフォルダとファイルをテキ...
-
レコードの登録順がおかしい
-
ファイルの漢数字の順番につい...
-
1の行を固定した上でVBAを用い...
-
並べ替えについて
-
上から何番目か。
-
リストボックス内を昇順並べる方法
-
文字型の順番がうまく並ばない。
-
Selectした時のレコードの取得順
-
accessでDISTINCT 句と矛盾
-
アクセスに関して。クエリの並...
-
月末日のみソートしたい
-
ハイフンの入ったデータの並べ替え
-
コンボボックスのソートについて
-
都道府県順、北からソートした...
-
タイトル行を固定してソートしたい
-
SQLのORDERBY句について質問です。
おすすめ情報