< návrat zpět

MS Excel


Téma: Výběr hodnot splňující podmínku + vyhodnocení rss

Zaslal/a 25.2.2014 12:56

Dobrý den,
řeším, jak zjistit v řádku 5 buňek, obsahující čísla např.10,50,3,8,23 atd. ty, které jsou < 10 s podmínkou, když jich bude více než 3, tak vrátit hodnotu "Splňeno", jinak vrátit hodnotu "Ke splnění získej [počet pro splnění] hodnoty". Jde vše zapsat do jedné buňky?

Př:
12,2,8,30,8,9,10,20 =Splněno
50,32,85,2,4 =Ke splnění získej 1 hodnotu

Můžete mi prosím s tímto pomoci? Marně si s tím lámu hlavu.

Děkuji Vám mnohokrát.
J.

Zaslat odpověď >

#017985
Jeza.m
Něco takového?
=KDYŽ(COUNTIF(A1:E1;"<10")>=3;"Splněno";"Ke splnění získej " & 3-COUNTIF(A1:E1;"<10") & KDYŽ(3-COUNTIF(A1:E1;"<10")=1;" hodnotu";" hodnoty"))

M@
Příloha: zip17985_sesit.zip (6kB, staženo 28x)
citovat
icon #017986
avatar
Keď už som to písal, tak to sem dám tiež:
=IF(SUMPRODUCT((A1:H1<10)*ISNUMBER(A1:H1))>3;"splneno";"Ke splnění získej " & 4-SUMPRODUCT(--(A1:H1<10)) &" hodnotu")citovat
#017990
avatar
Děkuji Vám moc! Jeza.m a AL. Funguje parádně. Mám štěstí, že existujou chytří lidi a Excel! 1citovat
#017992
avatar
@AL

Zkus si v čistém sešitu spustit proceduru, zdá se, že když dva vzorce dělají totéž, nemusí to být úplně totéž.


Sub test()
Dim cas As Single

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

[A1].Value = 1
[A1:A30].DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=30

[C1:C500].FormulaR1C1 = "=COUNTIF(C1,""<10"")"
ActiveSheet.Calculate ' Necháme spočítat závislosti buněk + případně rozběhneme procesor

cas = Timer()
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
ActiveSheet.Calculate ' přepočteme list na čas
Debug.Print Format(Timer() - cas, "0.000000") & " =COUNTIF(C1,""<10"")"

[C1:C500].FormulaR1C1 = "=SUMPRODUCT((C1<10)*ISNUMBER(C1))"
ActiveSheet.Calculate ' Necháme spočítat závislosti buněk + případně rozběhneme procesor

cas = Timer()
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
ActiveSheet.Calculate ' přepočteme list na čas
Debug.Print Format(Timer() - cas, "0.000000") & " =SUMPRODUCT((C1<10)*ISNUMBER(C1))"

ActiveSheet.UsedRange.Clear
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
citovat
icon #017994
avatar
@Lubo: good point
Na svoju chabú obhajobu uvediem, že ten Tvoj kód nesimuluje úplne presne zadanie, takže som ho trochu upravil, aby ho lepšie reflektoval:Sub test()

Dim cas As Single, myRngAddress As String
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
[A1].Value = 1
' [A1:A30].DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=30
[A1:A500].DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=500
' [C1:C500].FormulaR1C1 = "=COUNTIF(C1,""<10"")"
myRngAddress = [A1:A500].Address(, , xlR1C1)
[C1:C500].FormulaR1C1 = "=COUNTIF(" & myRngAddress & ",""<10"")"

' ActiveSheet.Calculate ' Necháme spoèítat závislosti bunìk + pøípadnì rozbìhneme procesor
cas = Timer()
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
ActiveSheet.Calculate ' pøepoèteme list na èas
Debug.Print Format(Timer() - cas, "0.000000") & " =COUNTIF(C1,""<10"")"
' [C1:C500].FormulaR1C1 = "=SUMPRODUCT((C1<10)*ISNUMBER(C1))"
[C1:C500].FormulaR1C1 = "=SUMPRODUCT((" & myRngAddress & "<10)*ISNUMBER(" & myRngAddress & "))"
ActiveSheet.Calculate ' Necháme spoèítat závislosti bunìk + pøípadnì rozbìhneme procesor
cas = Timer()
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
ActiveSheet.Calculate ' pøepoèteme list na èas
Debug.Print Format(Timer() - cas, "0.000000") & " =SUMPRODUCT((C1<10)*ISNUMBER(C1))"
ActiveSheet.UsedRange.Clear
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Uznávam ale bez mučenia, že Jezov prístup je vhodnejší a ja som vo svojej ješitnosti dal i svoje riešenie, ktoré som medzitým mal už napísané a medzitým odbehol od stroja.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje