sub financials
dim g as long
dim r as long
dim y as long
dim oh as range
dim vr as range
dim sum as long
set vr = Sheets("Financials").Range("B5:B53")
set oh = sheets("Financials").Range("B2")
y = application.worksheetfunction.countif(vr, "y")
g = application.worksheetfunction.countif(vr, "g")
r = application.worksheetfunction.countif(vr, "r")
if g = 5 then
oh = "G"
elseif g = 4 and y = 1 then
oh = "G"
elseif r>=2 then
oh = "R"
elseif y >= 1 and r>= 1 then
oh = "R"
elseif y >=3 then
oh = "R"
elseif g=3 and y=2 then
oh = "Y"
elseif g=4 and r=1 then
oh = "Y"
elseif g=2 and y=3 then
oh = "Y"
elseif y=2 then
oh = "Y"
end if
end sub
これは私がこれまでに書いたもので、正常に動作しますが、ご覧のとおり、セル全体を決定する 5 つのセルがあります。しかし、セルが 5 つ未満の場合もあれば、セルが 2 つまたは 3 つしかない場合もあります。セルが 5 つ未満の場合は、セル全体を決定するために 5 つのセルが必要になるため、この式は適用できません。
私は合計関数を使用することを考えていました。したがって、y、g、r の countif を合計し、その合計が 1,2,3 に等しい場合、次のコマンドを実行しますが、その方法がわかりません
y、g、r の合計 = 3 の場合、次のようにします。
if g = 3 then
oh = "G"
elseif g = 1 and y = 2 then
oh = "Y"
elseif g = 2 and r = 1 then
oh = "Y"
elseif g =1 and y = 1 and r =1 then
oh = "R"
elseif y = 2 and r = 1 then
oh = "R"
elseif r = 3 then
oh = "R"
y、g、r の合計 = 2 の場合、次のようにします。
if g = 2 then
oh ="G"
elseif g = 1 and y = 1 then
oh = "y"
elseif y = 1 and r =1 then
oh = "R"
や。。など
また、ワークシートをロックする必要がありますが、マクロは実行し続ける必要があります。それ、どうやったら出来るの?