- ベストアンサー
エクセル列の並び替えと総合評価のチェック方法は?
- エクセルでの列の並び替えや総合評価のチェック方法を教えてください。
- エクセルでの列の並び替えと総合評価のチェック方法を解説します。
- エクセルでの列の並び替えと総合評価のチェックについての方法をご紹介します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
回答No3です。 G1セルには次の式を入力して下方にオートフィルドラッグすれば判定結果が表示されます。 =IF(COUNTA(B1:F1)=0,"",IF(AND(COUNTIF(B1:F1,"a")>=3,COUNTIF(B1:F1,"c")=0),5,IF(AND(COUNTIF(B1:F1,"a")>=2,COUNTIF(B1:F1,"c")=0),4,IF(AND(COUNTIF(B1:F1,"a")>=1,COUNTIF(B1:F1,"c")=1),3,IF(COUNTIF(B1:F1,"b")=5,3,IF(COUNTIF(B1:F1,"c")<=2,2,IF(COUNTIF(B1:F1,"c")>=3,1,"")))))))
その他の回答 (6)
- utun01
- ベストアンサー率40% (110/270)
No.4です。 だらだらソース書いといてなんですが、No.6さんの方がスマートですね。 もし既存の評価判定で出した結果をチェックしたいのであれば、 No.6さんの式をH列に入れてG列には条件付書式で「次の値に等しくない」「=H1」をいれ、 書式を黄色塗りつぶし等に設定してからオートフィルドラッグしたらいいかもしれません。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>最終的にやりたいのは、総合判定が間違っていないかのチェックで、5評価なのにbが3つあったり、cが入っていたりすると判定しなおしとなります。ただそのルールが細かいので、並び替えをした後に目視でチェックしようかと思っています。 最終的に総合判定がしたいなら(あるいはチェックをしたいなら)わざわざ目視で判定するのではなく、直接判定基準を数式にすることをお勧めします(目視で判定するのでは、また判定ミスをする可能性があります)。 実際の判定基準がどのようなルールになっているのか、その細かいルールを条件分けして具体的に提示されれば、判定結果の正誤を判別する数式を提示することができると思います。
補足
ご指摘ありがとうございます。 お言葉に甘えて、ルールの一部を記載いたします。 ・aが3つ以上あり、cが無い場合 → 5 ・aが2つあり、 cが無い場合 → 4 ・aが1つ以上あり、cが1つの場合→ 3 ・すべてbの場合 → 3 ・cが2つ以下の場合 → 2 ・cが3つ以上の場合 → 1 となります。もうひとつ贅沢を言えれば、上記条件とは違った総合評価をしているセルに色がつくとなお嬉しいです。
- utun01
- ベストアンサー率40% (110/270)
それっぽいものを作って見ました。 Excel2007で作成しているので、下位互換があるかどうかはわかりません。 マクロ基本的な使い方は検索すれば簡単に分かるので割愛させて頂きます。 使い方: 1、以下のソースを「Alt+F11」からモジュールとしてコピーする 2、氏名~総合評価までの全データのセルを選択する 3、「Alt+F8」からMacro1を実行する Sub Macro1() Dim rng As Range Dim startClm As Integer Dim endClm As Integer Set rng = Selection startClm = rng.Column endClm = Range(Mid(rng.Address, InStr(rng.Address, ":") + 2, 1) & "1").Column rng.Select ActiveSheet.Sort.SortFields.Clear ActiveSheet.Sort.SortFields.Add Key:=rng.Columns(endClm - startClm + 1) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveSheet.Sort .SetRange rng .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Dim targetRng As Range Dim bufRng As Range For Each targetRng In rng If startClm = targetRng.Range("A1").Column Then Set bufRng = Range(targetRng.Offset(0, startClm).Address, targetRng.Offset(0, endClm - startClm - 1).Address) bufRng.Select ActiveSheet.Sort.SortFields.Clear ActiveSheet.Sort.SortFields.Add Key:=bufRng _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveSheet.Sort .SetRange bufRng .Header = xlGuess .MatchCase = False .Orientation = xlLeftToRight .SortMethod = xlPinYin .Apply End With End If Next End Sub
お礼
No.7のところのお礼のコメントに『No.6で・・』と書いてしましいました。申し訳ありません。No.7ではセルに色をつける説明まで教えていただけ、本当に感激です。 この方法もよくわからずで困っていたところなので助かりました!! ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
aabbcなど度比較するのに便利なようにするのでしたら並び替えをするよりも、例えばH1セルに次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =REPT("a",COUNTIF(B1:F1,"a"))&REPT("b",COUNTIF(B1:F1,"b"))&REPT("c",COUNTIF(B1:F1,"c")) どうしても並び替えがしたいとのことでしたらBからF列に手を加えるのではなくI1セルに次の式を入力してM1セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグすればよいでしょう。お望みのような形で表示されます。 =IF(COLUMN(A1)>5,"",IF(COUNTIF($B1:$F1,"a")>COUNTIF($H1:H1,"a"),"a",IF(COUNTIF($B1:$F1,"b")>COUNTIF($H1:H1,"b"),"b",IF(COUNTIF($B1:$F1,"c")>COUNTIF($H1:H1,"c"),"c",""))))
お礼
ありがとうございます。 こういった方法もあったんですね!!! 勉強になりました。
ただabcの数を数えたいだけでしたら、総合評価の列(列G)以降の列に新たに3列作って、カウント数だけを表示させたら楽かと思います。 例えば… 列A1からE1にa,a,b,c,bと入力されている場合 H1=COUNTIF(A1:E1,"a") I1=COUNTIF(A1:E1,"b") J1=COUNTIF(A1:E1,"c") これでH1にはA1からE1までのなかのaの数、I1にはA1からE1までのbの数、J1にはA1からE1までのcの数が表示されます。 あとはこれを行の数だけマウスでひっぱってコピーするだけです。
お礼
ありがとうございます。 こういった方法もあったんですね!!! カウントする方法も別の作業で使いたかったので、とても参考になりました。 ありがとうございました
- aokii
- ベストアンサー率23% (5210/22062)
総合評価順に目視でチェックでしたら、全データを、行列を入れ替えて別シートに貼り付けして、一人の氏名の評価のみ並べ替えをしてはいかがでしょう。
お礼
早速の情報提供ありがとうございます。 今回は、同じようなシートがいくつかあり、チェックするデータ数と多人数でチェックするため、 別の方法でやらせていただきます。 ありがとうございました。
お礼
ありがとうございます!! 最初にご提示していただいた方法もとても参考になりました。 最終的にはNo.6でまとめていただいたやり方が、まさしく求めていた方法です。 本当はお二方にベストアンサーを付けたかったのですが、 先に回答をいただいた方にベストアンサーをつけさせていただきました。 本当にありがとうございました。