プロが教えるわが家の防犯対策術!

JPEGの画像添付しました。この画像にあるデーターから、条件に会うものだけを抽出してまとめて表示したいと思っています。約1500名程度分です。また、壱・弐・参ともに0~100までの範囲内になっています。

条件について
1. 壱 20以上  弐   4以上   参  10以上   これは、無と表示する
 但し 壱 20以上  弐  10以上   参  1~9であれば、これは、無と表示する


2. 壱  0     弐   0      参  0  壱・弐・参のいずれかに0があれば再と表示する

3. 壱 19以下  弐   4以上   参  10以上   これは、再と表示する

4. 壱 20以上  弐   3以下   参  10以上   これは、再と表示する

5. 壱  9以下  弐   9以下   参   9以下   これは、再と表示する

6. 壱  9以下  弐   9以下   参  10以上   これは、再と表示する

7. 壱  9以下  弐  10以上   参   9以下   これは、再と表示する

8. 壱 20以上  弐   9以下   参   9以下   これは、再と表示する

9. 壱 19以下  弐   9以下   参   9以下   これは、再と表示する

「プログラムを作成したいので教えてほしいで」の質問画像

A 回答 (6件)

何をしたいのイマイチ理解できませんでしたが、要するに「無」とか「再」を表示したいという事でしょうか?


壱、弐、参がそれぞれE列、F列、G列だとしたら、再・無を表示したいセル(J2セル?)に↓の式を入れて下にコピーしてください。
=IF((2*(E2>=20)+(F2>=4)+(F2>=10)+(G2>=1)+(G2>=10))>=5,"無","再")

この回答への補足

なるほど、理解できない問い合わせになってしまいました。この関数で出来ました。ありがとうございました。
 1. 但し、もう少しお願いしてよろしいですか、データーの黄色で示した部分が自動的に黄色になる。

 2. また、弐の列の条件(4以上10未満)オレンジ色になるようにするにはどのようにしたらできるで   しょうか。さらに、色で示されたものを自動的に上の方でまとめて表示させたい(降順)とするなら    ば、どのようにしたらよいでしようか。

 3. もっというと、受験番号順のシートデーターができていて、そのデーターが別シートに自動的に移っ   て降順のデーターが出来上がっている状態にできませんか。

以上のことについて、如何なものでしようか。初心者で大変申し訳ありませんが、ご回答頂けると有り難いです。また、Microsoft Office Excel 2003を使っています。 

補足日時:2014/11/29 11:51
    • good
    • 0

>  1. 但し、もう少しお願いしてよろしいですか、データーの黄色で示した部分が自動的に黄色になる。



>  2. また、弐の列の条件(4以上10未満)オレンジ色になるようにするにはどのようにしたらできるで
>   しょうか。さらに、色で示されたものを自動的に上の方でまとめて表示させたい(降順)とするなら
>    ば、どのようにしたらよいでしようか。

1と2の色を付ける部分は条件付き書式を使います。
難しくありませんし、Excelの基本操作の1つですので、ご自分でヘルプやExcel解説サイト等を見て調べてください。
壱列の条件はセル値が20未満なら黄色に塗りつぶす設定。
弐列は、条件を2つ使い、4未満なら黄色、10未満ならオレンジと設定。
参列の条件は10未満なら黄色に塗りつぶす設定です。

並べ替えは、色を条件には出来ません。どこかの列の値を使って並べ替えます。


>  3. もっというと、受験番号順のシートデーターができていて、そのデーターが別シートに自動的に移っ
>    て降順のデーターが出来上がっている状態にできませんか。
マクロを組めば出来ますが、マクロ作成に必要な情報が少なすぎますし、失礼ですが現時点でそこまでのサンプルを作っても実際のブックやシートに合わせるための修正が出来るとも思えません。
今後の課題とされた方がよろしいかと……。
    • good
    • 0
この回答へのお礼

色々とお世話になりました、ありがとうございました。

お礼日時:2014/12/05 20:09

関数を使いifを使って入力すると、確かに簡単便利に出来ます。

しかし、途中で条件変更が生じた時を考えてください。関数式をじーっと見て、条件1~9と照らし合わせて、自力で変更出来ますか?マクロにしておいた方が変更すべき場所が明白だと思います。


使い方
1.エクセル上でAlt+F11を押すとVBE(Visual Basic Editor)が立ち上がる
2.左上のウインドウ(VBA Projectとか書いてる)で「標準モジュール」を右クリック→挿入→標準モジュール(Module1が挿入される)
3.Module1をダブルクリック
4.右側の空間に下記マクロをコピペする
5.条件5~8を要領に従って記入
6.色指定を同じく記入(条件指定が無いため途中になってます)
7.VBE画面を閉じる
8.ブックをマクロ付ブック(.xlsm)で保存。excel2003は.xlsでしたか?
9.処理したいシートを選び、Alt+F8→TestResultを選択→実行
(このブックが開いてあれば、処理するシートは別ブックでも可能)

色指定は分りにくかったら、マクロでなく他回答のように条件付書式を使ってください。その場合、下記マクロの色指定部分は削除してください。

老婆心ながら、初回実行はどうなってもいい別ファイルで試してください。失敗して復旧出来ない可能性もありますから。特に条件付書式が設定されてると、そちらが優先になります。


Sub TestResult()

Dim i As Long, LastRow As Long

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

'前回計算の無再判定のクリアと、色指定のクリア
Range("J2:J" & LastRow).ClearContents
Range("E2:J" & LastRow).Interior.ColorIndex = 0

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For i = 2 To LastRow
'無再の判定
If (Cells(i, "E") >= 20 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件1
Cells(i, "J") = "無"
ElseIf ((Cells(i, "E") >= 20 And Cells(i, "F") >= 10) And Cells(i, "G") >= 1) And Cells(i, "G") <= 9 Then '条件1の2
Cells(i, "J") = "無"
ElseIf (Cells(i, "E") = 0 Or Cells(i, "F") = 0) Or Cells(i, "G") = 0 Then '条件2
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 19 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件3
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") >= 20 And Cells(i, "F") <= 3) And Cells(i, "G") >= 10 Then '条件4
Cells(i, "J") = "再"

'同じ要領で条件9まで全部入力する


ElseIf (Cells(i, "E") <= 19 And Cells(i, "F") <= 9) And Cells(i, "G") <= 9 Then '条件9
Cells(i, "J") = "再"
End If


'壱の列の色指定
'i行E列が指定の条件を満たす場合、色を黄色にする

If Cells(i, "E") >= 4 And Cells(i, "E") < 10 Then
Cells(i, "E").Interior.ColorIndex = 6 '6は黄色
Cells(i, "J").Interior.ColorIndex = 6 '無再判定も黄色
End If
'同じ要領でオレンジ色指定(46)を入力
'セル説明
' Cells(i,"E")は「i行E列」を示す。iは変数なので""不要
    '色指定ここまで

Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

この回答への補足

 ありがとうございます、ご協力を感謝しています。下記のように補足と訂正をやったつもりですが、このような補足と訂正でよかったのでしょうか。再・無の表示や色もついてきません。間違っているのでしょうか、大変申し訳ありませんが再度みて頂きたいのですが、よろしくお願い致します。

Sub TestResult()

Dim i As Long, LastRow As Long

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

Range("J2:J" & LastRow).ClearContents
Range("E2:J" & LastRow).Interior.ColorIndex = 0

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For i = 2 To LastRow
If (Cells(i, "E") >= 20 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件1
Cells(i, "J") = "無"
ElseIf ((Cells(i, "E") >= 20 And Cells(i, "F") >= 10) And Cells(i, "G") >= 1) And Cells(i, "G") <= 9 Then '条件1の2
Cells(i, "J") = "無"
ElseIf (Cells(i, "E") = 0 Or Cells(i, "F") = 0) Or Cells(i, "G") = 0 Then '条件2
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 19 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件3
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") >= 20 And Cells(i, "F") <= 3) And Cells(i, "G") >= 10 Then '条件4
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 9 And Cells(i, "F") >= 9) And Cells(i, "G") >= 9 Then '条件5
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") >= 9 And Cells(i, "F") <= 9) And Cells(i, "G") >= 10 Then '条件6
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 9 And Cells(i, "F") >= 10) And Cells(i, "G") >= 9 Then '条件7
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") >= 20 And Cells(i, "F") <= 9) And Cells(i, "G") >= 9 Then '条件8
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 19 And Cells(i, "F") <= 9) And Cells(i, "G") <= 9 Then '条件9
Cells(i, "J") = "再"
End If

If Cells(i, "E") >= 4 And Cells(i, "E") < 10 Then
Cells(i, "E").Interior.ColorIndex = 6 '6は黄色
Cells(i, "J").Interior.ColorIndex = 6 '無再判定も黄色
If Cells(i, "F") >= 4 And Cells(i, "F") < 10 Then
Cells(i, "F").Interior.ColorIndex = 6 '6は黄色
Cells(i, "J").Interior.ColorIndex = 6 '無再判定も黄色
If Cells(i, "F") >= 4 And Cells(i, "F") < 10 Then
Cells(i, "F").Interior.ColorIndex = 46 '46はオレンジ色
Cells(i, "J").Interior.ColorIndex = 46 '無再判定も黄色
If Cells(i, "G") >= 4 And Cells(i, "G") < 10 Then
Cells(i, "G").Interior.ColorIndex = 6 '6は黄色
Cells(i, "J").Interior.ColorIndex = 6 '無再判定も黄色
End If

Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

補足日時:2014/11/30 22:48
    • good
    • 0

修正しました。


・全角文字を半角に変更
・色指定部分にEnd Ifを追加


Sub TestResult()

Dim i As Long, LastRow As Long

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

Range("J2:J" & LastRow).ClearContents
Range("E2:J" & LastRow).Interior.ColorIndex = 0

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For i = 2 To LastRow
If (Cells(i, "E") >= 20 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件1
Cells(i, "J") = "無"
ElseIf ((Cells(i, "E") >= 20 And Cells(i, "F") >= 10) And Cells(i, "G") >= 1) And Cells(i, "G") <= 9 Then '条件1の2
Cells(i, "J") = "無"
ElseIf (Cells(i, "E") = 0 Or Cells(i, "F") = 0) Or Cells(i, "G") = 0 Then '条件2
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 19 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件3
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") >= 20 And Cells(i, "F") <= 3) And Cells(i, "G") >= 10 Then '条件4
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 9 And Cells(i, "F") >= 9) And Cells(i, "G") >= 9 Then '条件5
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") >= 9 And Cells(i, "F") <= 9) And Cells(i, "G") >= 10 Then '条件6
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 9 And Cells(i, "F") >= 10) And Cells(i, "G") >= 9 Then '条件7
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") >= 20 And Cells(i, "F") <= 9) And Cells(i, "G") >= 9 Then '条件8
Cells(i, "J") = "再"
ElseIf (Cells(i, "E") <= 19 And Cells(i, "F") <= 9) And Cells(i, "G") <= 9 Then '条件9
Cells(i, "J") = "再"
End If

If Cells(i, "E") >= 4 And Cells(i, "E") < 10 Then
Cells(i, "E").Interior.ColorIndex = 6 '6は黄色
Cells(i, "J").Interior.ColorIndex = 6 '無再判定も黄色
End If
If Cells(i, "F") >= 4 And Cells(i, "F") < 10 Then
Cells(i, "F").Interior.ColorIndex = 6 '6は黄色
Cells(i, "J").Interior.ColorIndex = 6 '無再判定も黄色
End If
If Cells(i, "F") >= 4 And Cells(i, "F") < 10 Then
Cells(i, "F").Interior.ColorIndex = 46 '46はオレンジ色
Cells(i, "J").Interior.ColorIndex = 46 '無再判定も黄色
End If
If Cells(i, "G") >= 4 And Cells(i, "G") < 10 Then
Cells(i, "G").Interior.ColorIndex = 6 '6は黄色
Cells(i, "J").Interior.ColorIndex = 6 '無再判定も黄色
End If

Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

色判定のF列は、黄色とオレンジの判定が全く同じなので、このままでは黄色が無くても同じになります。編集途中と思っていいのでしょうか?

無再判定と色指定で使うIf文についてですが、以下の2種類があります。あなたの求める仕様で決めてください。重複が無いなら最初のIf~ElseIfでいいと思います。

If ○○ then
 処理1
ElseIf ×× then
 処理2
ElseIf △△ then
 処理3
End If
順番に条件判定し、条件○○が該当しなければ××を判定、該当なければ条件△△を判定、もし××で該当すれば処理2を行いIf文終了。条件△△や処理3は無視


If ○○ then
 処理1
EndIf
If ×× then
 処理2
EndIf
If △△ then
 処理3
End If
順番に全部条件判定する。例えば条件××に該当したら処理2を行い、残り条件△△も判定する。

この回答への補足

誠にありがとうございます。それに申し訳ありません、ここまでして頂き恐縮しています。それで、ここまでやって頂きながら恐縮なのですが「再・無」のところは、「条件付き書式」で処理した方がよいのではと思っています。
なお、すべて空欄の部分が発生した時は「欠」が入るように追加できませんか、勝手なお願いですが、よろしくお計らい下さいますようお願いします。
下記のマクロはレアケースのところだと思いますが、「再・無」も表示されないところがありましたので、追加したら表示されましたので、そのようにしてみました。初心者なもので、ほぼマクロの知識がないことはおわかりと思います。丁寧にご対処下さりありがとうございます。幾重にもお詫び致します。


ElseIf ((Cells(i, "E") <= 19 And Cells(i, "F") >= 4) And Cells(i, "G") >= 1) And Cells(i, "G") <= 9 Then '条件9の2
Cells(i, "J") = "再"

補足日時:2014/12/03 11:25
    • good
    • 0

条件付き書式


再無の色指定を条件付き書式で行うのは適正だと私も思います。ただ、再無の表示は出来ません。あくまで色等の書式のみです。あ、再無の文字の代わりに色指定するのですか?それなら可能です。

欠の表示
再無判定のIf分の最後の部分、条件9とEndifの間に下記を追加します。条件1-9どれにも該当しなかった場合の処理です。
Else
Cells(i,"J")="欠"

条件9-2の追加
追加自体は条件9の下にでも入れたら大丈夫です。しかし、条件9-2と条件3を合わせると「壱が19以下、弐が4以上なら、参の値に関わらず再」になりませんか?だとしたら、追加するより条件3を修正する方が早いと思います。

この回答への補足

いつもいつも大変申し訳ありません。
欠の表示
再無判定のIf分の最後の部分、条件9とEndifの間に下記を追加します。条件1-9どれにも該当しなかった場合の処理です。
Else
Cells(i,"J")="欠"
上記のようにやりましたが、「再」が「欠」になりません。条件の9の後にしたのですが・・・。それで、E列・F列・G列が空欄だったら、「欠」になるようにしたらできるのではと思いますが・・・・・・。すみません、わからない人間が失礼なこといいまして、申し訳ありません。ご回答よろしくお願いします。

補足日時:2014/12/04 18:30
    • good
    • 0

まず、前回回答の欠の表示部分を取り消します。

元に戻して下さい。
確認ですが、処理したい内容を正確に書くと、以下の条件でいいのですか?
「E列F列G列のうち、少なくとも1個以上が空欄の場合、J列を「欠」にする」

マクロ上の方を下記のように修正してください。


修正前
For i = 2 To LastRow
If (Cells(i, "E") >= 20 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件1

修正後
For i = 2 To LastRow
If (Cells(i, "E") = "" Or Cells(i, "F") = "") Or Cells(i, "G") = "" Then '条件9-2
Cells(i, "J") = "欠"
ElseIf (Cells(i, "E") >= 20 And Cells(i, "F") >= 4) And Cells(i, "G") >= 10 Then '条件1

修正内容
・空欄処理の2行追加
・条件1のIfをElseIfに変更

最後でなく最初に挿入した理由は、将来的に条件式変更があった場合に備えてです。
例えば条件4の参の条件が消えた場合、G列が空欄であっても「再」表示になる等を避けるためです。
    • good
    • 0
この回答へのお礼

 厚かましいですが、実は「文字が緑色のファイルが開けなくなり、困っています」の質問をしています。これも、以前のデーターを開けなくなっています。半分あきらめています、不可能なことのようです。
 このことはさておき、完成できました。色々とありがとうございました。でも、こんなに協力して頂いたこと衷心より感謝申し上げます。今後とも、よろしくお願い致し致します。幾重にもお礼申し上げます。

お礼日時:2014/12/05 20:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!