
仕事で、あるデータをまとめているのですが、
たくさんのデータの中で該当する条件があった(条件物にチェックを入れた)場合に、上に寄せるという方法をとりたいと考えています。また、そのチェックはいくつかあります。その場合、多ければ多い程どんどん上にいくような感じにしたいと考えています。
その方法を昨日から探しているのですが、なかなか見つからず・・・。
マクロ?を使うしかないでしょうか?その場合、どういったものになるか教えて頂けると幸いです。
また参考になるものがあれば教えていただけますでしょうか?
[補足]フィルターですと、条件に当てはまらないものは消えてしまい見れなくなるので個人的には微妙だと考えています。
使用ソフトのバーションは2013です。
大変そうな内容かと思いますが、親切な方いらっしゃいましたら是非教えてくださいますようよろしくお願いいたします。
![「[EXCEL]チェックボックスにレ点が入」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/0/542405890_57d3719fce2ee/M.png)
No.3ベストアンサー
- 回答日時:
No.1 ママチャリです。
最初から言っていただければ話が早かったのに・・・。桧山さんを甘く見ていました(すいません)。
G3セルの式を次のように変えて、Cntl+Shift+Enterで配列数式にしてください。
【G3セル】=SUM($B$1:$F$1*B3:F3)
さらに、該当SheetオブジェクトのWorksheet_Calculateイベントプロシジャに次のコードを書いておけば、チェックボックスを変える度に並び替えを行うことができます。
ただし、Calculateイベントなので、何らかの再計算が行われる度に並べ替えられます。データ行の○×(0,1)を変更しても再計算が行われてしまうので、その場合は手動計算にしておいた方が良いですよ。
さらに、1行目とG列を非表示にすれば、完璧でしょう!!
Private Sub Worksheet_Calculate()
Me.Sort.SortFields.Clear
Me.Sort.SortFields.Add Key:=Range("G3"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With Me.Sort
.SetRange Range("A2:G" & Me.Cells.SpecialCells(xlCellTypeLastCell).Row)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
![「[EXCEL]チェックボックスにレ点が入」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/542293914_57d3f6d1c8ce1/M.png)
ありがとうございます!!!!!
やってみたら出来ました!ママチャリさん超完璧です!!!
あとは行と列の項目が結構ありますので、その辺の調整したら完成できそうです!
ベストアンサーに選ばせて頂きます!ありがとうございました!
No.2
- 回答日時:
>[補足]フィルターですと、条件に当てはまらないものは消えてしまい見れなくなるので個人的には微妙だと考えています。
何か誤解があるようです。フィルターで、フィルターを使わずに並べ替えをしたほうが楽ではないでしようか。降順・昇順がありますから、それで並べ替えればよいです。
マクロで行うというもの吝かではありませんが、ひとつはどこまで作りこむか、また、どこまで組み込み方を理解できるかなどの不安が残ります。
フォームコントロールのチェックボックスが、きちんとセルに収まるように置きます。これについては、正確にやっていただかないと、正しく反応しません。以前、この方法に対して、別の回答者から、クレームをつけられた記憶がありますが、常識的に、フォームコントロールやオブジェクトの置く位置について、マクロを書く側が担保することは無理です。正確にセルに収まるようにやっていただくしかありません。今回は、列位置だけです。
ただ、あまり狭い幅のセルにフォームコントロールをお使いになるのは、難しいとだけは言っておきます。
>Cntl.TopLeftCell.Column '
これで、列位置が決定されます。
前回のクレームの場合のような、代案としては、cbNo = Mid(NameObj, InStrRev(NameObj, Space(1), , vbTextCompare)) を使います。しかし、こちらも、正しく、チェックボックスの名称が1~5まで入れられていることが条件です。ホームタブ-編集-検索と選択-オブジェクトの選択と表示を使って修正します。Check Box 1 など、最後尾に数字があることが条件です。どちらでもよいのですが、前者のほうが楽だと思います。
その上で、すべてチェックボックスに、このひとつのマクロを設定します。
'//標準モジュール
Sub SortMacro()
Dim Rng As Range
Dim NameObj As String
Dim Cntl As Object
Dim stFlg As Long
Dim cbNo As Long
On Error Resume Next
NameObj = Application.Caller()
If Err() <> 0 Then MsgBox "このマクロは直接動きません。", vbExclamation: Exit Sub
On Error GoTo 0
Set Cntl = ActiveSheet.CheckBoxes(NameObj)
'' チェックボックスが雑に置かれているので、正確な位置が出せない場合は、
'' このコメントアウト側を使う
' cbNo = Mid(NameObj, InStrRev(NameObj, Space(1), , vbTextCompare))
' cbNo = Val(cbNo) + 1
cbNo = Cntl.TopLeftCell.Column '物理列
With ActiveSheet
'起点
Set Rng = .Range("A3:F11") 'データ範囲
End With
With Rng
If Cntl.Value = xlOn Then
stFlg = 2 '降順
Else
stFlg = 1 '昇順
End If
.Sort Key1:=ActiveSheet.Cells(3, cbNo), Order1:=stFlg, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End With
End Sub
'//
添付画像は、フィルターの並べ替え機能です。
![「[EXCEL]チェックボックスにレ点が入」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/e/1138040_57d3dfd057226/M.jpg)
一応、回答頂く前にママチャリさんからの回答の中でできることがわかりました。ひとまずマクロの知識は乏しいので、ママチャリさんの方で進めさせていただいておりました。こちらの方が簡単そうと考えた上です。
現状残りの問題点としてましては、
・チェックを入れて、指定するセルに『「TUREが出た時、別のセルに1と表示する」、「FALSEが出たとき別のセルに0と表示する」やり方
・オートフィルタを、チェック入れる度に自動更新するやり方
の2点が気になっております。
前者の用途は、ママチャリさんが作られた添付画像にある1行目に結果反映させ、評価点に反映させる感じでいきたいと考えております。
こちら解決方法はご存知でしょうか?
ご存知でしたらご教授いただけますと幸いです。
No.1
- 回答日時:
添付のような表を作ってみてはいかがでしょうか。
イメージはかなり違いますが、作るのは簡単です。「○、×」の実際の値が「0、1」ということなので、分かりやすいように「0、1」で作っています。
1行目は、チェックボックスの代わりです。チェックしたい列に1を入力します。
2行目は見出しで、オートフィルタを掛けています。
G列は作業列で、評点を求めています。実際にはG3セルに次の式が入っていて、下にオートフィルされています。
【G3セル】=SUMPRODUCT($B$1:$F$1,B3:F3)
チェック行に入力した後、G列のオートフィルタで降順に並び替えれば、ご希望通り表示になります。
![「[EXCEL]チェックボックスにレ点が入」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/542293914_57d3c07883ef9/M.png)
すみません、教えてGooの使い方がわからず、
お礼できなくて申し訳ありません。
大変わかりやすく助かりました。
ただ気になることがあり、そちらは補足に付け加えましたので、
ご確認よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- ドライブ・ストレージ 古い外付けHDDから新品外付けHDDへのデータ移行方法 (Mac) 2 2022/12/11 02:01
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- Excel(エクセル) Excel M365 データチェックの仕掛けを作りたい 2 2023/06/03 23:54
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
- ゴミ出し・リサイクル 空トナー回収の件 3 2022/11/11 09:54
- ノートパソコン パソコンの購入方法について。 Excelの勉強をするためにwindowsパソコンがを購入しようと考え 5 2022/10/29 13:28
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オートフィルターの絞込みをし...
-
【マクロ】【画像あり】関数が...
-
EXCELのVBAで複数のシートを追...
-
勤怠表について ABS、TEXT関数...
-
【Officer360?Officer365?の...
-
Excelに貼ったXのURLのリンク...
-
Excelで4択問題を作成したい
-
エクセルについて
-
エクセル
-
グループごとの個数をカウント...
-
エクセル GROUPBY関数について...
-
グループごとの人数のカウント
-
グループごとの人数のカウント
-
エクセルシートの見出しの文字...
-
Amazonでマイクロソフトオフィ...
-
エクセルの複雑なシフト表から...
-
エクセルの関数について
-
【マクロ】実行時エラー '424':...
-
ページが変なふうに切れる
-
エクセル ドロップダウンリスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報
すみません、1つ補足します。
○と×のところについてですが、表示上ではそうなっていますが、
内部的には 1→○ 0→× となるようにデータの入力規則でルールを設定してあります。
なるほど…ありがとうございます。
できればチェックボックスの方が、初めて見た人からしてわかりやすいと考えているのですが、
その方法は難しいでしょうか?
一応始めに出した画像では、文字色を白にしていたため見せておりませんでしたが、
2行目(あとで設置する行は変えます)に、チェックボックスにチェックが入ると
FALSEからTRUEになります。
これをママチャリさんが出している、チェックを入れると黄色い枠に1が出るという感じのように
設定する方法ってわかりますでしょうか?
度々申し訳ありませんが、ご教示くださると幸いです。