< návrat zpět

MS Excel


Téma: smyčka rss

Zaslal/a 21.3.2017 22:07

Ahoj, zamrzla mi logika.
potřebuju kód, který mi zpracuje zadané číslo Y.

když bude Y sudé, potřebuju s ním udělat něco
když bude Y liché, potřebuju s ním udělat něco

Výsledné číslo bude bud sudé nebo liché

Dva předchozí rádky potřebuju zopakovat dejme tomu 5x, je to jedno.

děkuji za odpovědi :-)

Zaslat odpověď >

#035670
elninoslov
??? To akože ide iba o podmienku IF ?
Function VYPOCET(Y As Integer, Opakuj As Integer)
Dim i As Integer
VYPOCET = 0
For i = 1 To Opakuj
If Y Mod 2 <> 0 Then
'Nepárne
VYPOCET = VYPOCET + Y
Else
'Párne
VYPOCET = VYPOCET + i * Y
End If
Next i
End Function
citovat
#035987
avatar
"když bude Y sudé, potřebuju s ním udělat něco
když bude Y liché, potřebuju s ním udělat něco"

Nejjednodušší je

If y And 1 Then
... y je liché ...
Else
... y je sudé ...
End If


A, proboha, vysvětlete někdo tomu debilovi, co zobrazuje kontrolní čísla, ať je píše aspoň trochu rozeznatelně!!! Nejde odlišit 'S' od '5', '0' od 'O' atd., atd.

Tohle se pokouším vložit už pošesté.citovat
#035988
avatar
Promiň, byl jsem tak naštvaný z těch nečitelných kontrolních textů, že jsem zapomněl upravit tvou funkci:

Function VYPOCET&(ByVal Y&, ByVal Opakuj&)
Dim b As Boolean
b = Y And 1
For Opakuj = 1 To Opakuj
VYPOCET = VYPOCET + IIf(b, Y, Opakuj * Y)
Next
End Function


1.Funkce vrací číslo, tak by měla mít deklarovaný typ, nikoli vracet robustní, neohrabaný typ Variant.
2. Nepoužívej typ Integer, protože Windows ho (od verze 7) budou neustále převádět na Long a zase zpátky; užívej rovnou typ Long.
3. Parametry funkce slouží jen pro vstup hodnot do funkce, proto by měly být deklarovány ByVal.
4. Je zbytečné v každém kroku cyklu znovu a znovu zjišťovat, zda (neměnící se) Y je liché; stačí to udělat jednou před cyklem.
5. Konstrukce For Opakuj = 1 To Opakuj vypadá zvláštně, ale funguje - Basic přece spočte meze cyklu jen jednou, před jeho započetím, a uloží je do dočasných proměnných. Proč tedy nevyužít parametr Opakuj jako index cyklu?
6. Konstrukci If...Then...Else zde nepotřebuješ, stačí funkce IIf.citovat
#035989
elninoslov
Ale tá moja ukážková funkcia je holý nezmysel. Nikto nevieme, či M125 potrebuje/chce funkciu alebo procedúru, ani či je Y vo výpočtoch "něco1"/"něco2" menené alebo nie. Išlo len o príklad IF, a dokonca ani výsledok VYPOCET nám na nič nieje, keď nepoznáme odpoveď na predošlú vetu. Proste išlo len o ukážku jednoduchého IF. Máte pravdu s možnosťou použitia Opakuj ako oboch parametrov FOR, ale je to fakt zvláštne, ešte som to nevidel. O tom, že >=W7 nepracuje s Int som nemal páru. IIF nám bude stačiť iba v obdobnom prípade ako môj vymyslený výpočet "něco". Možno to bude výpočet na 5 riadkov, a to bude blbo zapísané v IIF. Test na pár/nepár pomocou AND je dobrý.
Vzhľadom na dátum, to vyzerá, že sa zase bavia sami tí, ktorí chcú pomôcť - teda bez zadávateľa :(citovat
#035992
avatar

Jan-Mach napsal/a:


A, proboha, vysvětlete někdo tomu debilovi, co zobrazuje kontrolní čísla, ať je píše aspoň trochu rozeznatelně!!! Nejde odlišit 'S' od '5', '0' od 'O' atd., atd.

Tohle se pokouším vložit už pošesté.

Zaregistruj sa a nebudeš musieť opisovať nejaké čísla.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