Diskuze: Hodnota, která není v tabulce
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
For I = 1 To 1402 ' řádek 1 až 1402
rozsah = "B" & I ' Sloupec B řádek 1 - 1402
With Range(rozsah) 'Vyhledání zadané hodnoty dveste ve sloupci B a řádku 1 až 1402
Set FoundCell = .Cells.Find(what:=sto, _
MatchCase:=False)
End With
Jestli se nepletu, tak procházíš v cyklu buňky B1...B1402. Rozsah, ve kterém provádíš hledání, je tedy vždy jedna buňka. To je zbytečně složité ne? Proč rovnou nepracuješ s hodnotou v té buňce?
Chtěl bych, aby v tom případě, že ji nenajde, vybral tu hodnotu, která je nejblíž pod ní.
Pokud projdeš všechny buňky ve sloupci B a požadovaná hodnota se nenajde, tak je projdeš znovu a budeš hledat nejblíže nižší hodnotu, tj. maximum z hodnot nižších než ta požadovaná. Což vlastně můžeš dělat už při tom prvním průchodu.
cas = CDec(InputBox("Zadejte čas na 100m (formát času např.: 9.46)"))
radek = 0
nahrada = 0
For i = 1 To 1402 'řádek 1 až 1402
tmp = CDec(Cells(i, 2).Value)
If tmp = cas Then 'nasla se hledana hodnota
radek = i
Exit For
End If
' když hodnotu nenajde. Chtěl bych, aby v tom případě, že ji nenajde, vybral tu hodnotu, která je nejblíž pod ní
If tmp < cas And tmp > nahrada Then 'zatim nejvyssi hodnota nizsi nez hledana
radek = i
nahrada = tmp
End If
Next i
If radek > 0 Then
score100 = Cells(radek, 1).Value 'Přiřazení bodové hodnoty
Sheets("List2").Select 'Aktivuje List2
ActiveSheet.Cells(1, 1).Value = "100 m " 'Hlavička
ActiveSheet.Cells(2, 1).Value = score100 ' Zapíše bodový výsledek na danou pozici
MsgBox "Bodová hodnota za čas: " & sto & " je " & score100, , "Bodová hodnota za 100m" ' Vypsání bodů
Else
'nevim co se ma stat kdyz se nenajde vubec zadna hodnota
End If
Zobrazeno 3 zpráv z 3.