Keresés

Részletes keresés

Fferi50 Creative Commons License 2014.01.25 0 0 23876

Szia!

 

Hát úgy néz ki, hogy a referstorange -t odagondoltam  (: hátha vannak gondolatolvasók is köztünk  -- és lőn :)

 

Egyébként én úgy értettem, hogy Delila elsőre azt nem értette, hogyan lesz a names("tartomany").referstorange("A1"). address -ből C3.  Ezt próbáltam megmagyarázni.

 

Tehát helyesen:

A names("tartomany").referstorange("A1") cella az éppen a range("C3") cellának felel meg, ha a tartomany a C3-nál kezdődik.

 

Egyébként a rövidített irásmódokkal én nem vagyok egészen kibékülve:

pl. names("tartomany").referstorange.cells.count=25

names("tartomany").referstorange.address=$B$3:$E$7

names("tartomany").referstorange(45).address=$B17 !!

Javára írom, hogy:

intersect(names("tartomany").RefersToRange,names("tartoman").RefersToRange(45)) is nothing = True

 

De hogy még szebb legyen (van ugye 5 sorunk és 4 oszlopunk), viszont:

names("tartomany").referstorange(7,12).address= $M$9  !!

A cells(7,12).address pedig $L$7. Vagyis a sor +2, az oszlop +1 a "normál" számításhoz képest. Felfedeztük az eltolás függvényt  nevekkel!!

 

Üdv.

Előzmény: tbando (23873)
tbando Creative Commons License 2014.01.25 0 0 23875

Azt tudja valaki, hogy a Names változat miért csak referstorange-gyel müködik, ha Range-s változat megáll önmagában?

Előzmény: tbando (23874)
tbando Creative Commons License 2014.01.25 0 0 23874

Hogy mikor lehet hasznos? Itt egy példa. A hatásukban ekvivalensek, de a 2. egyszerűbb. A 3. meg pláne.

 

Application.WorksheetFunction.Index(Range("tartomany"), 2, 2).Select
Names("tartomany").RefersToRange(2, 2).Select

Range("tartomany")(2, 2).Select

Előzmény: Delila10 (23872)
tbando Creative Commons License 2014.01.25 0 0 23873

Az a gyanum ,hogy a  names("tartomany").range("A1").address -ből hiányzik a Referstorange. Viszont a Range elhagyható:

names("tartomany").Referstorange(1).address             (cells)

names("tartomany").Referstorange(1,1).address          (row, column)

 

vagy Delila C3-a: 

names("tartomany").Referstorange(3,3).address

 

Előzmény: Fferi50 (23871)
Delila10 Creative Commons License 2014.01.25 0 0 23872

Ellenőriztem, úgy van, ahogy írtad, köszönöm.

Egyelőre nem jut eszembe olyan helyzet, mikor erre lenne szükségem. De ki tudja...

Előzmény: Fferi50 (23868)
Fferi50 Creative Commons License 2014.01.25 0 0 23871

Szia!

 

Hogy konkretizáljam is a példádat:

 

names("tartomany").range("A1") ugyanaz a cella, mint a síma range("C3") cella!!!

Hiszen a names("tartomany").range("A1").address = C3!  ha a tartományod a C3 cellával kezdődik.

 

Ezért is ragaszkodnak oktatáson ahhoz, hogy mindig konkrét hivatkozások legyenek a programban, mert akkor mindegy, hogy melyik munkalapod aktív, ha elnevezed az egyiket ws1-nek, a másikat ws2-nek. Akkor a ws1.range("XX") az mindig ugyanazt a munkalapot fogja jelenteni, viszont a range("XX") mindig az aktív munkalapra hivatkozik.

 

A tartomány elnevezések is erre jók, a konkrét és pontos hivatkozásokra. (pl. egy több ezer soros programban látsz egy cells(3,5) =akarmi utasítást, hát azt elég nehéz visszakövetni, hogy most vajon melyik munkalapra hivatkozik éppen.)

 

Üdv.

 

Előzmény: Delila10 (23861)
tbando Creative Commons License 2014.01.25 0 0 23870

Pontosan, ahogy mondod.  Analóg a cells(1), cells(2), cells(3) stb utasításokkal. Csak a tartománykezdet más.

 

Azt meg nem tudtam, hogy a For each  sorirányban veszi a cellákat. Kösz.

 

Előzmény: Delila10 (23867)
Sánta Kutya (SK) Creative Commons License 2014.01.25 0 0 23869

Valószínűleg. Úgy emlékszem, a Wikipédiában csak anyakönyvezhető névről van cikk.

Előzmény: pimre (23863)
Fferi50 Creative Commons License 2014.01.25 0 0 23868

Szia!

 

Az a helyzet, hogy az Excel minden  ugyanazzal a logikával hivatkoz meg, mint a munkalapot. A tartományon belül az első cella hivatkozása A1, a második cellánál B1 és így tovább sor vége után jön az A2 cella.

Tehát ehhez a hivatkozáshoz elég tudnod azt, hogy a tartományon belül hogyan helyezkedik el a cella!! Ezzel a címzéssel minden tulajdonságát megkaphatod.

 

Viszont, ha a munkalapon való elhelyezkedését akarod megtudni, akkor az Address -t kell megkérdezned, amely azt az értéket mutatja meg, hol található a munkalapon. Tehát az adott tartomány A1 helyzetű cellája bárhol lehet az adott munkalapon, hogy hol van, na ezt mondja meg az Address értéke.

 

Nagyon nem mindegy tehát, hogy simán range("A1")-et írsz - ami ugye az aktuális munkalap első celláját jelenti, vagy valamilyen names(tartománynév).range("A1")-et, esetleg egy objektum.range("A1")-et (pl set oszl=columns(4), oszl.range("A1").Address =D1).

 

Ez így nagyon jó egyébként és hasznos is, csak arra kell figyelni a programozásban, hogy melyik tartomány melyik cellájára akarsz hivatkozni.

 

Üdv.

Előzmény: Delila10 (23861)
Delila10 Creative Commons License 2014.01.25 0 0 23867

Kipróbáltam a cim$ = Range("tartomany")(1).Address sorban az (1)-et 2-re, 3-ra, stb. értékre átírni. Rendre a tartomány következő celláinak a címét adja meg. Abban a sorrendben halad, mint a For Each, tehát első sor tagjai, majd a következő sor tagjai.

Előzmény: tbando (23865)
Delila10 Creative Commons License 2014.01.25 0 0 23866

Ebből kiderült, hogy a Cseresznye női név. :)

Előzmény: pimre (23863)
tbando Creative Commons License 2014.01.25 0 0 23865

Szerintem az E5-ét. 

Előzmény: Delila10 (23861)
tbando Creative Commons License 2014.01.25 0 0 23864

Már elnézést,  de néhány kérdés:

 

 Milyen más programokban nem müködik?

Milyen más alkalmazásokra gondolsz?

Milyen más progik nem ismerik az arctan2-t?  Ha a vba-ra gondolsz, ott az arctan2: atan2

Előzmény: vasascnc (23859)
pimre Creative Commons License 2014.01.25 0 0 23863

Női név.

 

A kérésemre kapott listák arra inspiráltak, hogy kicsit utánajárjak a témának. Megtaláltam az Akadémia legfrissebb listáit: http://www.nytud.hu/oszt/nyelvmuvelo/utonevek/osszesffi.pdf és http://www.nytud.hu/oszt/nyelvmuvelo/utonevek/osszesnoi.pdf 

 

Letöltöttem az Akadémia által közreadott - tartalmilag nagyon jó, számítógépes kezelhetőség szempontjából aggályos - legfrissebb listáját.

Viszont a kiváló Solid Converter PDF v7 segítségével (merem ajánlani a programot mindenkinek ilyen célokra) áttettem Excelbe, ahol nem egész 1 órai munkával sikerült 1551 férfi és 2031 női nevet tartalmazó listát kapnom. Feltöltöttem a következő címre: http://data.hu/get/7344927/Utonevek_MTA_2014.01.01.xls

 

Későbbi tervem, hogy ha egyszer lesz időm, összevetem ezt a Jimmytől és Sánta Kutyától kapott listákkal, hogy tényleg megvannak-e ebben is a kapott listákban lévő nevek. 

Előzmény: Delila10 (23849)
tbando Creative Commons License 2014.01.25 0 0 23862

Kösz mindnyájatoknak a segítőkész válaszokat. Többek közt azért is, mert ezekről ugrott be, hogy a currentregion kereső szóval kell Jimmy 21802-re rákeresnem, ahol egy nagyon frappáns lekérdezést ajánlott. Nekem, mint meglepve láttam :)))). Ezt ajánlotta:

 

''cim$ = Selection.CurrentRegion(1).address

 

Ennek mintájára az alábbi a legrövidebb címlekérdező utasítás:

 

cim$ = Range("tartomany")(1).Address 

Előzmény: Fferi50 (23860)
Delila10 Creative Commons License 2014.01.25 0 0 23861

Kipróbáltam, a cella háttérszínének a lekérdezéséhez valóban kell a range("a1"), csak nem értem, miért éppen ez.

A tartományom a C3-ban kezdődik. Ha ezt adom meg az A1 helyett, egy másik (melyik?) cella háttérszínét kapom eredményül.

Előzmény: Fferi50 (23860)
Fferi50 Creative Commons License 2014.01.25 0 0 23860

Szia!

 

Szerintem a names("tartomany").referstorange.range("A1").row  illetve .column kell, hogy működjön. (Nálam 2010-es verzióban biztosan megy). Az már egy más kérdés, hogy a range("A1")-et kihagyva -ahogyan Te is írtad -, ugyanazt az eredményt adja a row/column, de úgy tapasztaltam, hogy más tartományoknál is így van ez (mármint hogy a row/column a tartomány legelső cellájának a sorát/oszlopát adja vissza).

Viszont, ha magának a cellának valamilyen más tulajdonságát akarod visszakapni, akkor már bizony kell a Range("A1").

 

Üdv.

Előzmény: Delila10 (23858)
vasascnc Creative Commons License 2014.01.25 0 0 23859

G=ARCTAN2((C62^2+C63^2-D12^2-D13^2)/(2*D12*D13);GYÖK(1-(C62^2+C63^2-D12^2-D13^2)/(2*D12*D13)^2))*180/PI()

 

 

F=((ARCTAN2(C62;C63))-ARCTAN2((3+4*((C62^2+C63^2-3^2-4^2)/(2*3*4)));(4*(GYÖK(1-((C62^2+C63^2-3^2-4^2)/(2*3*4))^2)))))*180/PI()

 

 

Volna ez a 2 számításom, az táblán jól működik,de sajnos más programban nem..

Miként lehetne ezeket a  képleteket egyszerűsíteni és úgy átt alakítani hogy más alkalmazások is értsék??

a legnagyobb gon amit észre vettem az az ARCTAN2-vel van mert ezt más progik nem ismerik.. :(

Delila10 Creative Commons License 2014.01.25 0 0 23858

sor = Names("tartomany").RefersToRange.Row
oszlop = Names("tartomany").RefersToRange.Column

MsgBox "Sor: " & sor & " Oszlop: " & oszlop

 

Így működik. Az előző végén a range("A1") nem tetszett neki.

Előzmény: Fferi50 (23857)
Fferi50 Creative Commons License 2014.01.25 0 0 23857

Szia!

 

A names("név").referstorange a névhez tartozó tartományt (range object) adja vissza. (az elírt e betűért sorry.)

 

A példád akkor ad hibát, ha a Print_Area tartomány nincs definiálva névként. (Ahogy Jimmy is írta.)

 

Üdv.

Előzmény: Delila10 (23850)
Delila10 Creative Commons License 2014.01.25 0 0 23856

Mire ide értem, megtaláltad. :)

 

Elnevezett tartomány adatait írattam ki a súgó példásával. A sor és oszlop a terület középpontjának az értékeit adta.

Előzmény: Törölt nick (23853)
aero1001 Creative Commons License 2014.01.25 0 0 23855

Közben rátaláltam. Azért köszi szépen.

 

=INDIREKT(CÍM(HOL.VAN(0;G:G;-1);7))-G2

Előzmény: aero1001 (23852)
Törölt nick Creative Commons License 2014.01.25 0 0 23854

Ha például az A oszlopról van szó, ÉS az A oszlop kitöltöttsége megszakítás nélküli, azaz nincsenek üres cellák az adatoszlopban, akkor ez jó lehet:

 

=OFSZET($A$1;DARAB2(A:A)-1;0;1;1)

 

 

Előzmény: aero1001 (23852)
Törölt nick Creative Commons License 2014.01.25 0 0 23853

Megvan. Jó cucc.

Csak előtte definiálni kell a "Print_Area" nevű tartományt.

 

Előzmény: Törölt nick (23851)
aero1001 Creative Commons License 2014.01.25 0 0 23852

Sziasztok!

Valószínűleg nektek egy egyszerű feladat lesz amit szeretnék megtudni.

Egy olyan képletet keresek, amely egy oszlop utolsó elemét adja eredményül. Az oszlop folyamatosan bővül és mindig az oszlop utolsó elemével kell számolni.

Segítséget előre is köszönöm.

Törölt nick Creative Commons License 2014.01.25 0 0 23851

Nem értem a hibára futott kódrészt. Mi volt a célja? Mit keres benne .Value?

Előzmény: Delila10 (23850)
Delila10 Creative Commons License 2014.01.25 0 0 23850

Nálam ez hibára futott, pedig kivettem az utasításodból a felesleges, elírás során bekerült e betűt.

 

A súgó 

p = Names("Print_Area").RefersToRange.Value

MsgBox "Print_Area: " & UBound(p, 1) & " rows, " & _ UBound(p, 2) & " columns"

példája is hibás eredményt ad.

 

 

A

Range("tartomány").Select
a$ = Selection.Address
Range("A1") = Left(a$, Application.WorksheetFunction.Search(":", a$) - 1)

 

viszont jó eredményt ad. Biztosan van egyszerűbb megoldás is.

 

Előzmény: Fferi50 (23847)
Delila10 Creative Commons License 2014.01.25 0 0 23849

Fogalmam sincs. Ha nincs az ismert színész, a Jácintot női névnek gondolnám.

Előzmény: Törölt nick (23848)
Törölt nick Creative Commons License 2014.01.25 0 0 23848

A Cseresznye az férfinév vagy női?

Előzmény: Delila10 (23840)
Fferi50 Creative Commons License 2014.01.25 0 0 23847

Szia!

 

Names("tartomany").referestorange.range("A1")

 

A referstorange adja vissza magát a tartományt, amire a név hivatkozik. Ennek már megnézheted minden olyan tulajdonságát, ami a tartományokat jellemzi.

 

Üdv.

Előzmény: tbando (23846)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!