Urob si svoju funkciu.
@elninoslov
Ťažko tu naraz diskutovať s odborníkom(A to ty si) a s amatérom. Ja som chcel od zac1234 dostať presný výraz ktorý potrebuje do bunky. Tak som sa snažil zostaviť ten reťazec(lebo ten vzorec je reťazec a s reťazcami sa narába podľa určitých pravidiel), teda skôr didakticky. No asi márne. Samozrejme, to čo si uviedol ty je "stráviteľnejšie". Ja naozaj netuším, či tam tie vzorce bude mať dva alebo 50000.(To asi budú citlivé údaje)
Ale ďalšia diskusia asi aj tak k ničomu nepovedie.
PS. To "blbé" som mylne predpokladal,že kritizuješ microsoft. Áno je naozaj blbé vytvárať vzorce takýmto spôsobom. Ja som to dal iba pre ilustráciu.
@elnonoslov
ty si v krátkej dobe už druhý, čo toto od excelu vyžaduje. To by sa tým naozaj mali zaoberať.
Len mi chýba presnejší popis čo vlastne chcete. Nakoniec ak je to také jednoduché, tak sa dá urobiť vlastná funkcia UDF.
To že by to nabúralo celú doterajšiu koncepciu excelu je nepodstatné. Excel totiž vnútorne využíva práve konvenciu R1C1. Pre nás menej prehľadnejšiu.
@zac1234
A prečo si hneď nenapísal, že chceš v bunke mať
B2 =$E5+E$5*$E$5
C3 =$D4+D$4*$D$4
D4 =$C3+C$3*$C$3
E5 =$B2+B$2*$B$2
F6 =$A1+A$1*$A$1
G7 a tu ti to vyhodí chybu.
Tak to ten tvoj vzorec robí. Ale to sa asi pýtam zbytočne asi už piatykrát.
Prípadne si zmeň noráciu z A1 na R1C1. Potom uvidíš presne ako má vyzerať výsledný vzorec v bunke. A presne takýto reťazec musíš zadať do toho tvojho makra. Excel vnútorne pracuje práve s takýmto formátom.
Promiň, ale snažíš se aby to pouze napsalo co chci,.....
No ja sa teda snažím pomôcť zadávateľom, teda píšem to čo chcú.
Asi by bolo blbé písať to, čo nikto nechce.
Ale to musí byť z otázky jasné, a v tomto prípade to tak nevidím.
No možno to ELNINOSLOV pripadá blbé, ale asi niečo také ešte nikto okrem teba nepožadoval. Ak by to tak bolo, tak by microsoft určite niečo vymyslel. Stále mi nie je jasné PREČO to musíš riešiť makrom, keď to tam jednoducho ten vzorec môžeš napísať. Prípadne sa na excel vykašli a skús nejaký iný kalkulátor.
Inak nahradiť časť reťazca sa dá cez CTRL+H, prípadne makrom cez replace.
Cells.Replace What:="$B", Replacement:="B", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
V piatom(hoa=5) riadku to má byť: $B2+B$2*$B$2
A vo štvrtom(hoa=4) $B3+B$3*$B$3 ???
Ako mám vedieť, čo tam vlastne chceš?
Tá "nejaká neznáma" je číslo ktoré chceš vo výsledku.
Preto je v tomto $F6+G$7*$H$8
raz (6-hoa) teda vo výsledku chceš 6
a (7-hoa) keď vo výsledku chceš 7 (teda G je siedmy stlpec)
Ak to chceš používať v makre stále, tak by si mal najprv naštudovať, čo je to relatívne adresovanie R1C1
To môže byť aj R[-4]c[-8] teda o štyri riadky smerom hore a o osem stlpcov doľava od danej bunky určenej parametrom hoa.
http://office.lasakovi.com/excel/zaklady/relativni-absolutni-odkazy-excel/
Odkiaľ si zobral tú "7"?
Cells(hoa, hoa).Formula = "=R[" & 2 - hoa & "]C" & 2 & "+R" & 2 & "C[" & 2 - hoa & "]*R" & 2 & "C" & 2 & ""
ps: A prečo sa to musí zapisovať makrom? Aký to má účel?
Sub zkouskamakra()
Dim hoa1 As Long
hoa = Cells(1, 1).Value
' v buňce A1 je hodnota 5
'máme výchozí buňku určenou proměnlivou souřadnicí - v tomto případě _
E5, do této chci zapsat (pomocí sčítání nebo odčítání od proměnné hoa) např. $F6+G$7*$H$8_
Cells(hoa, hoa).Formula = "=R[" & (6 - hoa) & "]C6+R7C[" & (7 - hoa) & "]*R8C8"
End Sub
Alebo skús toto: Výsledok je =D4
Cells(1, 1).Formula = "=R4C4"
Cells(3, 3).Formula = "=R[" & (4 - 3) & "]C[" & (4 - 3) & "]"
Cells(5, 5).Formula = "=R4C[" & (4 - 5) & "]"
Cells(7, 7).Formula = "=R[" & (4 - 7) & "]C4"
zac1234 napsal/a:
Tam by to bylo jasné, ale co v té části za rovnítkem : = "=" & Cells(hoa + 1, hob + 5).Address(0, 0).
Jak udělat třeba z hoa + 1 nakonec $6
Díky.
vyskúšaj tieto príkazy.
Malo by ti to docvaknúť
Cells(1, 1).Formula = "=R4C4"
Cells(3, 3).Formula = "=R[4]C[4]"
Cells(5, 5).Formula = "=R4C[4]"
Cells(7, 7).Formula = "=R[4]C4"
CmeldaBoris napsal/a:
Řeším ten samý problém - nedovolit uživateli smazat určité listy. Jdu tímto směrem:
1) Odchytím událost na úrovni listu Worksheet_BeforeDelete()
2) Oznámím uživateli, že je zakázáno mazat tento list
3) Uložím sešit ThisWorkbook.Save (ještě obsahuje mazaný list)
4) Zavřu sešit ThisWorkbook (s oním listem)
FUNGUJE TO, list není odstraněn, ALE Excel při tom spadne (hláška Excel přestal pracovat) i s případnými ostatními otevřenými sešity.
Měl by někdo nějaký tip, jak to udělat, aby se Excel korektně ukončil?
@CmeldaBoris
A to sa nedalo napísať na začiatku?
A toto si neprotirečí?
protože prostě potřebuju mít možnost přidávat listy (např. kopírováním z jiného sešitu), odstraňovat některé listy apod.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.