| 
    
     |  | ▼はじめて娘 さん: こんばんは。
 
 >VBA初挑戦です。。。
 >以下の数式をについて、あまりにも数式が長いので、
 >VBAで出来ないものかな?と思い、挑戦してみることにしました。
 でも下のコードと比べると数式のほうが私には理解しやすいですよ!!
 
 VBAコードの中でもCountif関数は
 
 application.countif(range("b2:e2"),"ENG")
 
 という書式で使用できます。
 
 Columns関数と同じ結果は、
 
 range("b2:e2").countで得られます。
 
 Counta関数も Application.CountA(Range("b2:e2"))
 でOKです。
 
 これを使ってみては
 いかがですか?
 
 ><数式>
 >===============================================================
 >A2
 >=IF(COUNTIF(B2:E2,"ENG")=(COLUMNS(B2:E2)),"ENG",
 >IF(COUNTIF(B2:E2,"FRA")+COUNTIF(B2:E2,"ENG")=(COLUMNS(B2:E2)),"FRA",
 >IF(COUNTIF(B2:E2,"ITA")+COUNTIF(B2:E2,"ENG")=(COLUMNS(B2:E2)),"ITA",
 >IF(COUNTIF(B2:E2,"GER"),"GER",IF(COUNTIF(B2:E2,"ESP"),"ESP",
 >IF(COUNTA(B2:E2)=(COLUMNS(B2:E2)),"JPN",IF(COUNTA(B2:E2),"ITA","FRA")))))))
 >===============================================================
 >
 ><コード>
 >================================================
 >Sub judgement()
 >
 >Dim a As Integer  '"ENG"の数を数えていく
 >Dim b As Integer  '"FRA"の数を数えていく
 >Dim c As Integer  '"ITA"の数を数えていく
 >Dim d As Integer  '"GER"の数を数えていく
 >Dim e As Integer  '"ESP"の数を数えていく
 >Dim f As Integer  '"JPN"の数を数えていく
 >Dim i As Integer  '"列"の数を数えていく
 >
 >For i = 2 To 5
 >
 >  Cells(2, i).Select
 >  Select Case Cells(2, i).Value
 >
 >    Case Is = "ENG"
 >      a = a + 1
 >
 >    Case Is = "FRA"
 >      b = b + 1
 >
 >    Case Is = "ITA"
 >      c = c + 1
 >
 >    Case Is = "GER"
 >      d = d + 1
 >
 >    Case Is = "ESP"
 >      e = e + 1
 >
 >    Case Is <> "FRA"
 >      f = f + 1
 >
 >  End Select
 >
 >Next i
 >
 >'B2〜E2:"ENG"=4のとき、A2="ENG"
 >  If a = 4 Then
 >    Range("A2").Value = "ENG"
 >
 >'B2〜E2:"FRA"+"ENG"=4のとき、A2="FRA"
 >  ElseIf b + a = 4 Then
 >    Range("A2").Value = "FRA"
 >
 >'B2〜E2:"ITA"+"ENG"=4のとき、A2="ITA"
 >  ElseIf c + a = 4 Then
 >    Range("A2").Value = "ITA"
 >
 >'B2〜E2:"GER">=1のとき、A2="GER"
 >  ElseIf d >= 1 Then
 >    Range("A2").Value = "GER"
 >
 >'B2〜E2:"ESP">=1のとき、A2="ESP"
 >  ElseIf e >= 1 Then
 >    Range("A2").Value = "ESP"
 >
 >'B2〜E2:"JPN"=4のとき、A2="JPN"
 >  ElseIf f = 4 Then
 >    Range("A2").Value = "JPN"
 >
 >'B2〜E2:"JPN">=1のとき、A2="ITA"
 >  ElseIf f >= 1 Then
 >    Range("A2").Value = "ITA"
 >
 >'B2〜E2:上記条件以外のとき、A2="FRA"
 >  Else
 >    Range("A2").Value = "FRA"
 >
 >  End If
 >
 >End Sub
 >================================================
 >
 >ですが、
 >B2:"-"
 >N2:"JPN"
 >O2:"JPN"
 >E2:"JPN"
 >と入力した結果、A2="JPN"にならずに、A2="ITA"になってしまいます。
 >
 >どこが間違っているのか、教えていただけますでしょうか。
 
 
 |  |