Ваш запятая в качестве десятичного заполнителя конфликтует со стандартным разделителем списков EN-US.Используйте .FormulaLocal и напишите формулу так, как она будет отображаться на листе.
dim value1 as string, value2 as string, value3 as string
Value1 = Worksheets(Countryname).Cells(k, 5).text
Value2 = Worksheets(Countryname).Cells(k, 14).text
Value3 = Worksheets(Countryname).Cells(k, 23).text
Cells(k, 4).FormulaLocal = "=MIN(" & Value1 & ";" & Value2 & ";" & Value3 & ")"
'alternate with qualified cell addresses
Cells(k, 4).formula = "=min(" & Worksheets(Countryname).Cells(k, 5).address(external:=true) & "," & _
Worksheets(Countryname).Cells(k, 14).address(external:=true) & "," & _
Worksheets(Countryname).Cells(k, 23).address(external:=true) & ")"
Глядя на то, как вы используете k , можно легко заключить, что вызапустить цикл, как for k=2 to lastRow
.Если это так, то напишите все формулы сразу.
with range(Cells(2, 4), cells(lastRow, 4))
.formula = "=min(" & Worksheets(Countryname).Cells(2, 5).address(0, 1, external:=true) & "," & _
Worksheets(Countryname).Cells(2, 14).address(0, 1, external:=true) & "," & _
Worksheets(Countryname).Cells(2, 23).address(0, 1, external:=true) & ")"
end with
Если вы жестко кодируете значения в формуле рабочего листа, вы можете просто записать значение результата в.
Cells(k, 4) = application.min(Worksheets(Countryname).Cells(k, 5).value2, _
Worksheets(Countryname).Cells(k, 14).value2, _
Worksheets(Countryname).Cells(k, 23).value2)