< návrat zpět

MS Excel


Téma: Jednoduchý skript ve VBA (ArcGis) rss

Zaslal/a 3.11.2015 18:53

Ahoj, prosím o pomoc s formulací funkce, jedná se o jednoduchý skript v ArcGis, v field calculatoru- je to tabulka jako v Excelu, používá VBA, potřebuju tam přidat funkci if.., je tam na výběr jazyk VB nebo Phyton. Vybral jsem VB.

Tabulka obsahuje sloupec pojmenovaný KAT- (obsahuje text( NPR, PR..) a
ROZL( rozloha v hektarech).
Mám zadáno pokud je v KAT vyraz "NPR", přiřad číslo 20 do slopce BODY. Pokud je v KAT vyraz "PR" a v ROZL 40 a méně, zapiš do sloupce BODY číslo 10, pokud je nad 40, zapiš číslo 13. Zkouším tu první část, ale hláška je chybná syntaxe.

if Range("KAT").Value = "NPR" then
Range("BODY").Value = 20
else
Range("BODY").Value = 10
end if

Děkuju.

Zaslat odpověď >

#027798
elninoslov
V Exceli by to bol takýto nejaký vzorec.
K tomu makru: Čo znamená Range("KAT"), Range("BODY") ? Máte také pomenované oblasti ? Jedná sa iba o jeden riadok, alebo ide o vzorec v celej tabuľke ? Je vo funkcii UDF (uživateľsky definovaná funkcia, použitá vo vzorci...)?
Příloha: rar27798_podmienkaif.rar (6kB, staženo 15x)
citovat
#027801
elninoslov
A tu máte návrh na dve metódy pomocou makra, na jeden riadok (s pomenovanými oblasťami pre každú z 3 buniek).
Příloha: rar27801_podmienkaifm.rar (12kB, staženo 16x)
citovat
#027806
avatar
Tabulka má přes 500 řádků, Range("KAT") - by mělo znamenat vyber sloupec s názverm KAT. Je to sice excelvská tablka, ale nevím jestli se můžu orientovat podle názvů buněk jako v excelu np. A2. Náhled tabulky jsem nahrál na ulzto.cz

http://ulozto.cz/xKAaHuUi/bez-nazvu-pngcitovat
#027808
avatar
Děkuju za skript, druhy soubor v excelu sice otevřu, ale nezobrazí se makro(mám je povolené), sloupce mám pojmenované, možná jen nevím jak je vyvolat. Můžu celou tabulku vybrat a vyexportovat do excelu, ale nevím jestli se podaří zkopírovat výsledky zpátky. Spíše by to bylo lepší provést přímo ve VBA.citovat
#027820
elninoslov
Neviem ako presne vyzerá objektová štruktúra VBA v ArcGis, ale v Exceli by makro vyzeralo napr takto.
Sub Podmienka()
Dim KAT(), ROZL(), BODY(), r As Long
KAT = Range("KAT").Value
ROZL = Range("ROZL").Value
ReDim BODY(1 To UBound(KAT), 1 To 1)
For r = 1 To UBound(KAT, 1)
Select Case True
Case KAT(r, 1) = "NPR": BODY(r, 1) = 20
Case KAT(r, 1) = "PR" And ROZL(r, 1) <= 40: BODY(r, 1) = 10
Case KAT(r, 1) = "PR" And ROZL(r, 1) > 40: BODY(r, 1) = 13
Case Else: BODY(r, 1) = 0
End Select
Next r
Range("BODY").Value = BODY
End Sub

Podmienkou je, aby boli definované oblasti KAT, ROZL, BODY, rovnako vysoké. Dalo by sa aj bez nich samozrejme, ale neviem ako presne pracuje ArcGis, pokúšal som sa nejaký aj sprevádzkovať, žiaľ bezúspešne. Zaujímalo by ma, či sú tie Vaše oblasti dynamicky menené, ak áno, tak ako máte ošetrený rozsah? Ak nemáte a rozsah sa bude meniť, tak to takto byť nemôže. Proste by som potreboval ten ArcGis.

Dokážete si teda tento príklad pretaviť do Vášho riešenia ?citovat
#027825
avatar
Myslím si že oblasti nejsou dynamicky měněné, acgis je boužel placený, dostali jsme ve škole licenci na rok, která je nepřenosná.Tento skript bych dokázal upravit podle mého zadání.Zkoušel jsem zkopírovat Váš skript a spustit, jenže výsledek je chybná syntaxe.

Skript v arcgis vypadá np. takto.. http://gis.stackexchange.com/questions/1947/arcmap-field-calculator-vba-questioncitovat

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