-
GAMEPOD.hu
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
lapa
veterán
és az a baj, hogy a linkelt cellában csak a kiválasztott listaelem sorszáma jelenik meg? mert ha igen, akkor:
1. két oszlopban ''papper'' meg ''ár'', harmadikban (mellette!) ''sorszám''
2. kombibox meg linkelés megcsinálva ''link'' cellába
3. célcellában: =INDEX(''ár'';HOL.VAN(''link'';''sorszám'';0))
HOL.VAN = MATCH, az ''ár'' és a ''sorszám'' fix cellatartományt jelölnek. lehet, hogy van erre vmi egyszerűbb is, de nekem ez ugrott be hirtelen. az is lehet, hogy nem is ez a probléma. akkor részletezd.
[Szerkesztve] -
lapa
veterán
egyébként ha ennyire sok beágyazás van lehet hogy tényleg egyszerűbb lenne vmi visual basic megoldás. a sok beágyazás meg pláne a beágyazott képletek egymásra mutogatása nagyságrendekkel növeli a számolási igényt. pláne ha hosszúak az oszlopok. nekem volt már 5-6 mb-os excelem tele képlettel, ami saccra 5 perc alatt számolt újra 2 ghz-en. írj konkrétumot, próbáld meg lemodellezni, ha kell megpróbálok segíteni.
-
lapa
veterán
izé, azt azért elmondom előre, hogy amit tudok a vb-ről, azt a vb súgóból tudom. nem tanultam programozást se soha. a ''nézzünk végig minden cellát'' stílus kissé brute-force, de hát azért vannak a mega-giga-hertzek. Bővebben: link (pass: xl)
feltételezzük, hogy ugyanaz az adatbank és célfájl könyvtára. az érvényesítés jelen esetben ''ajánlat 1.xls'' D oszlopában lévő ''IGEN'' szöveg. az E oszlop lehet (legyen) rejtett a felhasználók elől.
ez egy kicsit kifordított példa ugyanis lehet, hogy célszerűbb a kódot a célfájlban elhelyezni, mint ezer külön adatbankban, de egyrészt gyakorold te is a súgót, másrészt ezzel megvalósítható vmi event-triggering, hogy pl. ''ajánlat 1.xls'' minden mentésekor töltse be az adatokat (csendben hozzáteszem hogy ha jót akarsz, az igazi kódot ez esetben is az egyetlen céltáblába rakod, az adatbankokból meg csak meghivatkozod a céltábla makróját).
szóval dolgod lesz vele elég, de a végén ha minden igaz lesz a ''lefutott.xls''-ben egy fasza kódod, amit a sok beviteli tábla pl. mentéskor elindít. van pár másodperc amíg az egyik adatbank ment, addig a másik ugye nem fér hozzá (=runtime error 1004).
remélem segítettem. jótanácsként csak annyit (nemtom mennyire vagy jártas a vb for excel-ben), hogy én bepippantottam anno a ''visual basic'' menüt az excelben, és rövid utasításokat kezdtem rögzíteni, utána meg az editorral (ALT+F11) megnéztem, hogyan mentette el. ezt tedd meg sztem az ''ajánlat 1.xls'' megnyitása után is, (magamhoz képest) sokat kommenteltem.
aki meg (jobban) ért hozzá, bírálja felül simán, én is szívesen tanulnék.
[Szerkesztve]
[Szerkesztve] -
lapa
veterán
kicsit megmoddoltam, ez hosszab célfájl-listánál kevesebbet küzd. Bővebben: link pass: xl
-
lapa
veterán
válasz Winetoo001 #154 üzenetére
nemtom mennyire vagy otthon a visual basicben, de a javallatom a következő: előtted van a 99 sheet (előtte bakup!), grafikon nélkül. jobb gomb az eszköztárak mellett --> visual basic eszköztár bepippant --> megjelenik a videómagnó-like toolbar --> karika gomb megnyom --> grafikon elkészít sheet 1-hez (kizárólag az, lehetőleg ne ilyenkor kezdj el a táblában javítgatni stb.) --> kocka megnyom --> ALT+F11 megnyom --> erre megjelenik az, amit csináltál az excel nyelvén (ha jobb oldalon nem egy kód jelenik meg, akkor a bal menüben a sheet alatt a ''macros''-ra duplakatt --> itt megpróbálod kiokosítani, hogy hol hivatkozik az aktuális táblára és arra megpróbálsz vmi for-next ciklust írni. ha nagyon elvesztél akkor reámdobod mailben a teljes kódot, lehet hogy tudok segíteni.
-
lapa
veterán
izé, ha azt mondod, hogy mindkét adapter mindkét oszlopa mellé raksz egy olyan oszlopot, hogy 1B (=1-es adapter be), 1K (=1-es adapter ki), 2B, 2K (ugyanez) és egymás alá másolod őket (tehát A oszlop: időpont, B oszlop kategória). a listát sorba rakod idő növekvőbe. mellészerkesztesz egy olyan oszlopot, ami megnézi, hogy az előtte lévő milyen kategória (1, 2 + B, K), és arra már lehet sztem logikát csinálni. az eredmény az, hogy minden idő mellé kihozd, hogy akkor kezdett el 1, 2 vagy 0 adapter ''foglalt lenni''. gondolom legfeljebb az előző két sor adatai alapján ez meghatározható. ha ez megvan, az időtartamok az előző sor időpontjaiból sztem megint számolhatók. nem csinálom meg helyetted, mert én sem látom ám igazán át a saját gondolatmenetemet, de sztem megoldható
-
lapa
veterán
válasz parandroid #167 üzenetére
beszúrás --> objektum --> fájlból --> ikonként látszik.
ahhhh. buta lassú csiga.
[Szerkesztve] -
lapa
veterán
válasz parandroid #170 üzenetére
teszteld le, küldd el magadnak. sztem így sumákolják be a vidiket is a tűzfalon, úgyhogy műxenie kell.
-
lapa
veterán
-
lapa
veterán
pivot.
vagy részösszegek egy csupa 1-et tartalmazó dummy oszloppal.
ha meg mindenképpen vmi barkácsra vágysza, akkor nevek mellé oszlopba ''ha balranév=balraegyelfelettenév akkor felettecella+1, egyébként 1''. persze előtte rakd sorba a neveket. utána mégegy oszlopba lehet ''tegyél x-et minden olyan sorba, melynél balra lent 1 szerepel''. ezután másolás-spéci beillesztés-értékek - utána x-eket tartalmazó oszlop szerint sorbarak...
[Szerkesztve]
[Szerkesztve] -
lapa
veterán
1. vb súgó telepít
2. excelből alt+f11
3. vb súgó megnyit
4. ''sheetchange event'' bebarkácsol
5. a ''source'' a megváltozott cella
6. for i=1 to aktuális cella if cella(i,oszlop).value=''source'' then msgbox ''ajaj'' end if next i
remélem tudtam vmit segíteni és télleg műxik így. elég barkács így, ugyanis minden bevitel után végigmászik az összes előtte lévő soron. sztem az egyenkénti hasonlítást vmi értelmesebb függvénnyel ki lehet iktatni és akkor nem kell a ciklus... dehát itt századmásodpercekről van szó. -
lapa
veterán
mondjuk ezt sose tudtam megérteni miért ilyen béna. mert az, hogy az angol excel nem ismeri az fkerest vagy mittomén az egy dolog. de hogy a lokalizáltak nem eszik meg az angol fv-eket, az elég gáz.
-
lapa
veterán
#243 szvsz körkörös lesz. szerintem csak úgy tudod, ha minden hónaphoz hozzárendeled a megfelelő értékeket a legördülő menüből. tehát ''menücélcella''-1 értéket adni az előző hónapnak. bár nemtom honnan jön a FALSE, lehet én sem értem pontosan a kérdést. linkelj be vmi mintát esetleg üresen vagy kamu adatokkal...
-
lapa
veterán
válasz loszerafin #280 üzenetére
és ha kicseréled a ''mailto:'' karaktert semmire? oszlop kijelöl --> ctrl+h
egyébként sztem nem menti az értékeket. pivotnál van ilyen kesselés, sima celláknál nem hiszem... -
lapa
veterán
...hmmm. sor minden cellája... szóval ha már pár ember volt olyan kedves, hogy megismertetett anno a vba-val azt hiszem az a legkevesebb, hogy próbálom átadni ugyanezt még több embernek.
a vba nem bonyolult, csak annak tűnik. rövid összefoglalás:
1 programkészítés:
1.1 bepipálod a menük közül a ''visual basic'' menüt.
1.2 megnyomod a ''rec'' gombot (mint a videón).
1.3 mentés mehet a tesztmunkafüzetbe.
1.4 csinálsz valami egyszerűt (pl egy cella kiszínezése).
1.5 megnyomod a ''stop'' gombot.
2 megtekintés:
2.1 a ''visual basic'' eszköztáron a ''visual basic editor'' gombra kattintasz.
2.2 az editorban baloldalt a könyvtárszerkezetben a tesztmunkafüzet alatt van ''modulok''. erre duplán kattintva jobb oldalon megjelenik a program, amit csináltál.
2.3 ha megnézed nem vészes (persze little english jól jön), kijelöli a cellát, majd a kijelölésen hajtja végre a műveletet.
2.4 az 1.1-2.3 lépéseket ismételve lehet nézkélődni, hogy milyen általad csinált dolgot hogyan rögzít. a leggyakrabban a kijelölt (selection) résszel foglalkozik.
3 továbbá
célszerű aktiválni az ''immediate window''-ot az editor ''view'' menüjében. az immediate ''azonnali'', egyszerű dolgokat helyben megcsinál. ha kérdezni szeretnél, csak rakj minden elé ?-et. pl. ?now kiadja az aktuális időt. hát nem tündéri?
a cellákat a makró általában vmi fix hivatkozással írja bele a programba. ezt én nem szeressem. sztem egyszerűbb ez:
cells(<sor>,<oszlop>).select ez kijelöli a megadott cellát.
cells(1,1).select ez pl. kijelöli az A1 cellát.
range(cells(1,1),cells(2,2)).Select a range használatával csak két végpontot kell megadni (a kijelölés itt A1:B2 lesz)
ezzel már jól lehet jelölgetni. ofkorsz a fentieket lehet próbálgatni az ''immediate'' ablakban, ezekhez nem kell ''?''.
a kijelölt részekkel nem sokra megyünk, ha sok cellán akarjuk ismételni a műveletet (pl. #321). persze néha elég az elején a kijelölt területet átírni (nem harap) de nem mindig. csinálhatunk ciklust (kicsit brute-force de legalább egyszerű). erre nagyon jók a cell hivatkozások. egy alap ciklus:
for i = 1 to 256
'legyen i betű amit használunk és egytől 256-ig vegyen fel egyesével növekvő értéket. 256 az oszlopok száma, tehát egy egész sor.
cells(1,i).select
'mindig kiválasztja i oszlop első sorát.
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:=''0'', Formula2:=''1''
Selection.FormatConditions(1).Font.ColorIndex = 6
'fenti két (három...) sorban egy feltételes formázást rögzítettem korábban. ha a cella értéke 0 és 1 között van, legyen sárga a cella. nem is fontos tudni, mi van odaírva, ha rögzítéssel (''rec'') csináltad tuti jó lesz.
next i
'utolsó sor, ez mondja meg a ciklusnak, hogy eddig tartott és most kezdje a mókát újra a következő i értékkel. i helyett (szinte) bármit használhatsz.
ha a fentieket bemásolod az immediate-be, akkor ha minden igaz egyből műxik is. persze itt a példában használt formázás mindig az aktuális cellára vonatkozik, de lehetne ilyen is:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:=''=$A$2=4''
Selection.FormatConditions(1).Font.ColorIndex = 6
a fenti azt eredményezi, hogy ha az A2 cella értéke 4 lesz, akkor a formázott (bármelyik) cella besárgul. persze ezt is rögzítettem, a rák se tud ilyeneket kívülről.
sztem aki már képes arra, hogy a gyakran használt képleteit ne varázslóval rakja be csak beírja, annak fél órás munka a fentiek megértése és utána csak használni kell, jön magától. remélem mindent korrektül írtam és pár ember kedvet kap hozzá. -
lapa
veterán
nem a legjobb megoldás mert statikus, de valamilyen szinten elegáns:
Function hanyas(maxpont As Long) As String
Select Case maxpont
Case Is < 1
hanyas = ''ájájáj nulla vagy kevesebb''
Case Is < 11
hanyas = ''1''
Case Is < 21
hanyas = ''2''
Case Is < 31
hanyas = ''3''
Case Is < 41
hanyas = ''4''
Case Is < 51
hanyas = ''5''
Case Else
hanyas = ''ájájáj túlteljesített terv''
End Select
End Function
ha pl. A1 cellában 45 van, A2-ben meg =hanyas(A1) akkor kiveszi a vízbül. máshova jó lehet a módszer ettől függetlenül, pl. zanzásítani vmi 30e soros feltételrendszert.
a problémára rémlik még vmi =AB.XXX fv., aminél a pontszámokat feltételként (pl. <10) kell megadni és akkor az is tud vmi hasonlót, mint az FKERES. emlékszik vki erre esetleg? kerestem, de nem találtam meg az anyagot róla...
[Szerkesztve] -
lapa
veterán
válasz TrollBalint #343 üzenetére
szvsz nem fogja elhinni uccse. próbálj meg rámásolni egy default cellát, majd cellaformázás - szöveg. vagy rakj elé '-t hátha.
-
lapa
veterán
emlékeztem, hogy egyszer már sikerült csak nehézkes megmondani neki mert nincs tooltip. szal aza lényeg, hogy a formulát választod ki és a szerkesztőlécbe vmi ilyesmit írsz:
=ISNUMBER(FIND(''x'';A1;1))
ha az adott cella szövegében van x, teljesül a feltétel. persze ahhoz meg már vb kéne, hogy 1000 sorra alkalmazd... -
lapa
veterán
azért nem eszik olyan forrón a kását ismerni pár dolgot benne meg érteni hozzá nem ugyanaz. mindenesetre igen megtisztelő, még ha nem is igaz. télleg nem vágod esetleg ezt: Bővebben: link ? a run parancs benne van a súgóban, de nem bírtam kiokosítani mit is kéne csinálni.
a feladathoz: egyébként nagyjából ennyi nálam is. talán annyit tudnék még hozzátenni, hogy a sheets-re lehet indexxel is hivatkozni: sheets(2) a második fület jelenti. mondjuk én még sose használtam, mert ha berakok útközben még egy fület az elejére, akkor ugrott a dolog. -
lapa
veterán
ha a következő sorokat bekopizod a visual basic editorban a ''ThisWorkbook'' kódjaként, akkor működni fog. A1 cella értékét kapja vagy béla.
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Source As Range)
' runs when a sheet is changed
If ActiveSheet.Cells(1, 1).Text = '''' Then
ActiveSheet.Name = ''béla''
Else
If ActiveSheet.Cells(1, 1).Text <> ActiveSheet.Name Then
ActiveSheet.Name = ActiveSheet.Cells(1, 1).Text
End If
End If
End Sub
aposztróf+aposztróf = macskaköröm ha minden igaz.
érdemes sztem elmenteni későbbi ''minden bevitelnél valamit lefuttatós'' szükségletek kielégítésére.
[Szerkesztve]
[Szerkesztve] -
lapa
veterán
ja. csekk súgó: ''Workbook Object Events''
ugyanez működik pl. SheetSelectionChange esetén már kurzormozgatáskor is.Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
Target.Interior.ColorIndex = 3
End Sub
most csináltam kígyós gamez. -
lapa
veterán
szóval összesítő munkalap A1:
=Munka1!A1+Munka2!A1+Munka3!A1+Munka4!A1+...+...+...
ha ezután az A1 cellát másolod és beilleszted mondjuk A2-be, akkor ezt kell kapnod:
=Munka1!A2+Munka2!A2+Munka3!A2+Munka4!A2+...+...+...
a beillesztést megheteted minden olyan cellára az összesítő munkalapon, ahol az előző munkalapokban összegzendő érték van. -
lapa
veterán
minta Bővebben: link
egyébként a ''vezérlők'' eszköztárat kő kiválasztani, onnan lehet mazsolázni. a vezérlőknek vannak paraméterei, pl. legördülőnél a listaelemek cellatartománya és a célcella, amibe beírja a kiválasztott listaelemet.
a dátumokkal való összekötésre szép példákat hoz a fájl. ha kérdés van írj. -
lapa
veterán
én elsőre így csinálnám:
1. hónapok és darabszám oszlopokra autoszűrő
2. autoszűrő sora (fejléc) fölé új sor beszúrása
3. szűrés valamelyik hónapra (fontos, hogy szűrve legyen!)
4. az imént csinált legfelső sorra és a darabszám oszlopra állva szummajel megnyomás (nem képlet beírás)
5. kijelölés lehúz a szűrt adatokon túlra és enter
6. különböző szűrések esetén mindig a szűrt tartomány szummája fog megjelenni
lenne mintatábla, de nemtom most felnyomni. mondjuk több hónap szűrése gizikének kicsit macerás...
mod: más lehetőség:
0. ellenőriz, hogy hónap és darab oszlopok el vannak-e nevezve (fejléc)
1. hónap+darab oszlop kijelöl (preferably egész oszlop
2. adatok --> kimutatásdiagramm
3. mindent leokézol vagy tovább vagy mittomén
4. a megjelenő táblának a bal oszlopába behúzod a ''hónap'' elemet a mezőválasztóból
5. a jobb oldali nagy kockába behúzod a ''darab'' elemet
6. ha bal fent ''darab / darab'' jelenik meg, akkor a jobb oldali oszlopon jobb gomb --> mezőbeállítások --> összeg --> ok
[Szerkesztve] -
lapa
veterán
válasz enzo_ferrari #454 üzenetére
nemtod átküldeni? elsőre kicsit magas.
mod: a vége: amikor még vastag a kerete (miután kihúztad a szmájlit), akkor jobb gomb --> makróhozzárendelés
[Szerkesztve] -
lapa
veterán
válasz enzo_ferrari #456 üzenetére
értem akkor hirtelen másra gondoltam. nemtom egyébként, a rögzítő se jegyzi meg a hozzárendelést. de volt már, hogy sikerült menüt csinálnom, ami csak adott munkafüzetnél jelent meg. de hogy hogyan azt nem vágom.
én otthagyom mindenkinél mindig. a jobbak kapnak még malacosat is aztán viszonthallás. a gombokkal meghivatkozott fáljok makrója úgyis megnézi az elején, hogy gizike jókor nyomta-e meg (értsd: az a tábla van-e nyitva, amin futnia kéne...) -
lapa
veterán
válasz enzo_ferrari #458 üzenetére
mitől brutál? msgbox ''ejnye gizike figyejjé jobban mit nyomogatsz''
nézem ezt a custom menüs témát de nekem az xp sehogyse akarja munkafüzet-függővé tenni a megjelenítését. -
lapa
veterán
válasz enzo_ferrari #460 üzenetére
Application.CommandBars(''kusztom'').Visible = True
ez így nem jó?
eltüntetésre meg megjelenítésre: #405 - #407 nézd át az eventeket. van sok fajta, sztem új munkafüzetes is.
[Szerkesztve] -
lapa
veterán
válasz enzo_ferrari #462 üzenetére
1. sheet 1 a célfülecske
2. f11
3. bal fent excel ojects --> sheet 1 duplakatt --> jobboldalt fehér lesz
4.Private Sub Worksheet_Deactivate()
MsgBox ''eltűnök''
End Sub
Private Sub Worksheet_Activate()
MsgBox ''megjelenek''
End Sub
'a fenti ''megjelenek'' megnyitásnál nem fut le, tehát
6. bal fent excel ojects --> thisworkbook duplakatt --> jobboldalt fehér lesz
7.Private Sub Workbook_Open()
MsgBox ''workbook megjelenek''
End Sub
az msgboxok helyére ugye a szmájli nem tud közvetlenül kerülni. tudsz viszont egy custom toolbart csinálni. azt hozzá tudod rendelni a munkafüzethez és ha minden igaz ez annyit fog jelenteni, hogy megtod hívni lásd #460. arra meg már előtte ráteheted a szmájlit a hozzárendeléssel. ez mondjuk én még nem próbáltam, dehát küzdj vele te is.
én még mindig azt mondom vagy mindig szmájli vagy egy egyszerűen egy 200x300 gomb 72pt ''ide kattincs'' a sheet nem használt részén. pláne ha balra a ''new'' gombtól balra teszed rutinból odanyom asziszi szmájli erre eltűnik neki minden. már csörög is a telefon... ha érted mire gondolok -
lapa
veterán
válasz SPDeluxe1.0 #466 üzenetére
még pár hasznos:
ctrl+space oszlopot jelöl
shift+space sort
ctrl+shift+space mindent
ctrl++ sor/oszlop/tartomány beszúrása
ctrl+- sor/oszlop/tartomány törlése
több cella kijelöl --> bevitel --> ctrl+enter minden kijelölet feltölt
ctrl+nyíl teli/üres cellákig ugrik
ctrl+shift+nyíl teli/üres cellákat jelöl
ha soksoros adatok mellé képletet szerkesztek a legutolsó kettőt kombinálom:
1. ctrl+le (adatsor végére ugrik)
2. adatsor alatti sor kijelöl
3. ''x'' majd ctrl+enter
4. a fentről másolt képletek ctrl+shift+le kombóval egyszerűen beszúrhatók, nem kell pagedownozni meg csúszkázni. -
lapa
veterán
válasz SPDeluxe1.0 #468 üzenetére
lopott a szöveg de ha egyszer ideillik: egyik barátom mutatta ezeket. úgy hívják, hogy excel súgó.
f1
[Szerkesztve] -
lapa
veterán
mesélje már el nekem valaki hogyan lehet kiiktatni azt a szuper funkciót, hogy a nagy számokat tudományossá alakítja. kerestem, de hiába. köszönöm.
Új hozzászólás Aktív témák
- Gyúrósok ide!
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- AMD APU (AM4 és AM5) topik
- AMD GPU-k jövője - amit tudni vélünk
- Napelem
- Telekom mobilszolgáltatások
- TCL LCD és LED TV-k
- PlayStation 5
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- További aktív témák...