Hozzászólások
-
SzerzőBejegyzés
-
Na.
Ezek a legjobb pillanatok!
Gratulálok!Kedves Kriszta!
Így látatlanban nehéz megmondani mi a baj.
Ha csinálnál egy mintát, és feltöltenéd, akkor meg tudnám nézni, h mi a baja.
A makró és az adatfájlt zip-eld össze.Azt azért jó, ha tudod, hogy a SUMIFS függvény nem tud zárt munkafüzetből dolgozni, tehát ha ezt akarod használni, akkor valóban meg kell nyitni a forrás munkafüzetet. De ez igaz akkor is, ha a makró lefut, és beírja a képletet, majd bezárod a forrás fájlt. Ekkor el fognak romlani az eredmények.
na mindegy, ha teheted, töltsd fel azt, amit eddig csináltál. Ha üzleti adataid vannak, akkor másítsd meg az adatokat. Nem kell csak mondjuk 10 sor.
Imre
Ha már lefut, az biztató.
Lehet, hogy rá kéne nézzek távolról.TeaViewer-ed van?
Te tudod kezelni a Mac-et, én megpróbálom a makrót meggyógyítani, hogy ott is működjön.
Vagy legalább látnám, hogy mi a baja.Igen, sajnos valóban nincs, nem tudtam. Sajnos a Mac-es Office mostohagyermek még mindig.
A B terv egy makró lehetne, ami kigyűjti a dolgokat, de Mac-en Excel-t makrózni öngyilkosság. A Windows-on írt makrók jó eséllyel nem emennek.
Azért megpróbáljuk jó?Csatoltam egy makrós megoldást.
A szures lapon beírod a B1-be a recept nevét, és megnyomod a gombot.Ha működik, akkor örülünk.
Néhány megkötés:Az adatok lapon a táblázatnak A1-ben kell kezdődnie (fejléc)
A szures lapon az A3-ba teszi a szűrést mindig.Megy?
Imre
Attachments:
You must be logged in to view attached files.Szia!
Csináltam egy Power Query megoldást.
remélem nálad is működni fog.Az első munkalapon az adatforrást táblázattá alakítottam, az első oszlopnak adtam egy Add-in nevet.
A táblázat neve az, hogy Data.
Ebből kiindulva fut le egy átalakítás, ami a második munkalapra betölti annak a receptnek a hozzávalóit, aminek a nevét beírod a B1-es cellába.Ha az első munkalapon kicseréled vagy bővíted az adatokat, hogy az összes recept benne legyen, és az egészet táblázattá alakítva a data nevet adod, akkor működni fog.
A szűrés akkor fut le, ha a B1-be beírod a recept nevét, majd az alatta lévő szűrt eredményre jobb klikk és Frissítés.
Előbb nézegesd ezzel, majd mentés másként után próbáld ki az összes adattal.
jelezz vissza, hogy mi lett!
Lehetnek kompatibilitási problémák, kíváncsi vagyok.
Imre
Attachments:
You must be logged in to view attached files.Ha nem haragszol, akkor átírtam a címet. Amint látod, mindenki megpróbál a címmel tömören utalni a problémára.
Kb. úgy, ahogy most átírtam.
Ha jól látom 2016-os Excel-ed van.
Ez a probléma megoldható makróval vagy PowerQuery-vel. Excel 2016-ba már be van építve.
Én az utóbbit javaslom.Első körben kell csinálni egy UNPIVOT-ot, és utána egy szűrést vagy egy PIVOT táblát interaktív szűréssel.
Ha feltennél egy minta fájlt, azon megmutatnám.Viszont fontos lenne, hogy a nevek igaziak legyenek, mert azokat a Power Query bedrótozza a kódba. Átírni nem annyira szívderítő munka. Az adatoknak nem kell valósnak lenniük, és 3-4 receptnyi adat elég szerintem.
Összesen különben hány receptet tárolsz így?
Imre
2017-02-28-23:04 Hozzászólás: Cella lekérdezés adott időszakra, eredmény összehasonlítása más értékkel #34122017-02-28-08:24 Hozzászólás: Cella lekérdezés adott időszakra, eredmény összehasonlítása más értékkel #3409Az Office 2016 jó hír, mert abba be van építve a Power Query alapból.
Miért jár keresztre feszítés? Ezt nem értem. Telepíteni nem lehet dolgokat? Ez esetben nem kell.Egy munkahelyi problémához kértél segítséget.
A Power Query verziót este tudom feltenni, mert az otthoni gépemen van.
Igen, jól érted.Ha a szabadság igényléses tábla struktúráját megváltoztatjátok, vagy az átalakításhoz is készül egy megoldás, akkor csak be kell másolni az aktuális adatokat a Power Query riport munkafüzetbe, és az eredmény táblán nyomni egy frissítést.
Imre
2017-02-28-00:48 Hozzászólás: Cella lekérdezés adott időszakra, eredmény összehasonlítása más értékkel #3405Ha tudsz telepíteni Power Query bővítményt, azaz 2010-es vagy annél újabb Exceled van, akkor tudok szolgálni egy megoldással, ahogy említettem.
Itt egy kép róla.
Valamiért nem látszik, de az első oszlopban ott vannak a nevek is természetesen.
Béla
Béla
Béla
Béla
LaciTehát csak azok, ahol eltérés van.
-
A hozzászólás módosításra került: 8 years, 1 month telt el-
horvimi.
Attachments:
You must be logged in to view attached files.2017-02-28-00:31 Hozzászólás: Cella lekérdezés adott időszakra, eredmény összehasonlítása más értékkel #3403Szia!
Én annyit tudok most segíteni, hogy feltételes formázással kiemelem azokat a műszak bejegyzéseket, ahol V-nek kellene lennie, de nem az van.
Csatoltam.
Ha a szabi bejegyzés tábla is hasonlóan lenne kitöltve, mint a műszak, de abba csak V bejegyzések vannak, akkor Power Query-vel meg lehetne csinálni úgy, hogy csak aműszal táblát meg a szabi táblát kellene aktualizálni, majd frissítés, és kész.Fontos kérdés,hogy milyen verziójú Excelt használsz? Mivel a feladat xls formátumú volt.
Imre
Attachments:
You must be logged in to view attached files.Szia!
Pontosan azt, amit leírtál, makróval lehet megcsinálni.
Minden gomb kattintás eseményéhez megírni, hogy aktiváljon egy adott nevű lapot. Esetleg a lap nevét vegye az első oszlopból.Makró nélküli megoldásként lehetne azt csinálni, hogy az első lapon a lapnevekhez Hyperlinket rendelsz, ami a vonatkozó munkalap valamelyik cellájához ugrat.
Imre
Imre
Kicsit utánanéztem, nem sokkal lettem okosabb. Az biztos, hogy nem könnyű dologról van szó.
Ez egy SQL szerver kapcsolat, nem MS QUERY kapcsolat.Elképzelhető, h csak makróval lehet megcsinálni.
1. Meg kellene próbálni rögzítővel felvenni azt, hogy az SQL parancsban megváltoztatod a dátum értéket.
2. Ha sikerül, akkor a kódban a konkrét dátum helyére már be lehet varázsolni egy cella aktuális értéket, vagy esetleg be is kérheti a dátumot egy Inputbox-ban
3. A makróhoz készítesz egy indító gombot, vagy hozzáadsz egy billentyűkombinációt.
4. A makrót talán érdemes lenne külön munkafüzetbe tenni, vagy az Egyéni makró munkafüzetbe.
5. Indításkor bekérné a kívánt dátumot, és a kapcsolatban módosítaná a dátumot, majd elmentené a munkafüzetet.Ha az egész, amit leírtam, kínai, mert nem makróztál még soha, és nincs senki körülötted, aki segíthetne, akkor ki kell találni valamit.
Imre
Szia!
Kipróbáltad? Ha igen, mit tapasztaltál?
Ha még nem, próbáld ki!Nem fog sikerülni.
Marad a makró, vagy a Power Query. Utóbbi bonyolultsága a feltételtől függ.
Imre
Szia!
Ha makróval szűrsz, de helyben és nem kéred, hogy azonnal másolja máshová a szűrés eredményét, akkor megmarad az autoformázás.
Ezután a szűrés eredményét makróval másolhatod a kívánt helyre, és VOILÁ!Kipróbáltam, nekem működik!
Imre
Szia!
Első probléma
————————-
A speciális szűrést helyben végzed, vagy az eredményt más helyre kéred?
Kicsit utánanéztem, és sajnos az a hírem van, hogy ha más helyre másolod rögtön a szűrést, akkor a feltételes formázás nem fog megmaradni.
Megoldások:
1. Helyben szűrd, és utána másold a szűrés eredményét
2. Ugyanezt le lehet makrózni
3. megint csak makró, ami a szűrés eredményére alkalmazza ugyanazt a feltételes formázást, ami az eredeti táblán volt.Második
————-
Hát, az a tól-ig így szövegesen eléggé érdekesen hangzik, konkrétan hajmeresztő!
Látnom kellene a táblát, és hogy mit próbáltál meg, ami nem működött.
Nem tudom, hogy hányféle értékelésed van, de ezzel a módszerrel csak azt tudod vizsgálni, hogy egy cellában az van-e pontosan, hogy „1 db- 6 db”.
Ha a szóközöket elhibázod, már nem lesz egyenlő.
Tölts fel egy mintát!Imre
Szia!
Hogyan csatlakozol az SQL szerverhez?
MS SQL-lel?Az Adatok/Kapcsolatok ablak második lapján ott van az SQL kérdés.
próbáld meg a konkrét dátumot vagy dátumokat kérdőjelre cserélni.Nézd meg mi történik frissítéskor, és hogy hogyan változik a kapcsolatok ablak!
Imre
Szia!
Csak egy apróságon múlik a dolog. A mentéskor meg kell adni a Local:=True argumentumot is.
Ezzel utasítjuk arra, hogy a helyi beállításoknak megfelelő elválasztójeleket kezeljen.
tehát olvasáskor és íráskor is a magyar rendszernek megfelelően pontosvesszőket használ.Ez persze csak akkor igaz, ha magyar a Windows vagy olyan, ahol a nemzetközi beállításokban a listaelválasztó jel pontosvessző.
A kérdéses parancs tehát nálad:
ActiveWorkbook.SaveAs Filename:= _ "C:\Users\.....\Desktop\Partnerek_Teszt.csv", FileFormat:=xlCSV, _ CreateBackup:=False, Local:=True
Imre
Szia!
Azt képzelem, egy rekord feltöltése úgy történne, hogy a 4-5 legördülő listából ki kell választani az értékeket (ezek adják a rekordot), majd valami eseményre (pl gomb) hozzáíródnak egy létező tartomány végéhez.
De bármilyen másik működést választanánk, elsőre azt gondolom, hogy ezt makró nélkül nem nagyon lehet megcsinálni. Hiszen az alsó táblázat aljára az újonnan kiválasztott adatok valami esemény hatására kerülnek.
Az én tudásom alapján nem tudnék olyan megoldást csinálni pusztán hivatkozásokkal, hogy ha kiválasztok egy menüből egy elemet, az menjen mondjuk C8-ba, majd ha még egyszer legördítem, és kiválasztok egy másikat, akkor az meg menjen a C9-be, és így tovább.
Imre
Szia!
Ebben az esetben nem elég az „Ismétlődő értékek” szabály, mart az valóban nem nézi az előfordulások számát.
Ha az is fontos, hogy hányszor ismétlődik, akkor képlettel kell szabályt alkotni.Külön szabály a 2x ismétlődőkre, és külön az annál többször ismétlődőkre, ha elég ez a szétválasztás.
De lehetne 2-3-4-5- stb.. darabonként külön-külön szabályt csinálni.jelen esetben a következőt kell csinálnod:
1. Kijelölöd az egész tartományt, azaz mindkét oldalt
2. Töröld a feltételes formázást belőle, de maradjon kijelölve
3. Új szabály->Formázandó cellák kijelölése képlettel
4. Képlet:=DARABTELI($A$1:$U$10;A1)=2
-> Ehhez megadsz egy formátumot
5. Maradjon kijelölve, és adj hozzá még egy szabályt képlettel
6. A képlet:=DARABTELI($A$1:$U$10;A1)=3
-> Ehhez megadsz egy másik formátumot.
7. készFigyelj arra, hogy a DARABTELI képletben az első argumentum a teljes tartomámy fixálva, a második argumentum pedig a tartomány első cellája dollárjel nélkül (F4-el tudod módosítani)
Így minden kijelölt cellára megcsinálja az ellenőrzést.Ha 3-nál is többször előfordulhat egy érték, akkor arra is mind hozzáadhatsz egy új szabályt.
Ha 3 előfordulás után már nem számít, csak színezze, akkor a második képletben a relációs jel >= legyen.
Jelezz vissza, hogy sikerült-e!
Imre
Bocs, közben lemaradtam.
Azt hiszem értem mit szeretnél csinálni: Van egy olyan cellád, ami Merged, azaz összevont, több soros.
Ehhez a konkrét cellához igazítanád a sort?ha igen, nézd meg ezt:
https://www.thespreadsheetguru.com/blog/2014/2/21/why-cant-my-row-height-automatically-adjustImre
Szia!
Eddig mit tettél az ügy érdekében?
Mi okoz problémát?Imre
Szia!
Megtetszett nekem ez a probléma, ezért írtam róla egy egész cikket.
http://excel-bazis.hu/tutorial/dinamikus-nevtartomany-keplettel
És ez most Neked köszönhető!
Imre
Szia Anikó!
Jól látod, ez Excel probléma. Az a gond, hogy a CSV eredetileg sima ASCII kódoláshoz lett kitalálva, amerikában, ahol nincsenek speciális karakterek.
Ezen korlát miatt vezették be az UTF (Unicode) kódolást.
Az Excel viszont nem tud UTF kódolt csv-t menteni.(Mondjuk az ö és ű betűkkel nem kellene problémának lennie.)
Lehet, hogy a fájl eredetileg másként van kódolva?A mentés másként-ben van egy ‘Unicode text’mentési lehetőség, ami jó lenne, tehát elvileg megmaradnak a spec karakterek, de cserébe viszont TAB delimitert tesz a text fájlba.
Egyik lehetőség, hogy elmented makróval ilyen TAB delimitált txt-be, majd kinyitod notepad-el, és kicseréled a TAB-okat pontosvesszőre, elmented Unicode-ban.
Ez elég béna, és akárki nem is tudja megcsinálni.Másik lehetőség lehet, hogy az adatokat cellánkét, soronként kell egy új fájlba menteni.
Ez nem egy sima mentés másként, hanem le kell programozni, és úgy menteni a végén.Ezt találtam:
http://stackoverflow.com/questions/2524703/save-text-file-utf-8-encoded-with-vbaEzt esetleg még megpróbálhatod:
http://superuser.com/questions/466267/excel-destroying-special-character-when-saved-as-csvImre
-
A hozzászólás módosításra került: 8 years, 3 months telt el-
horvimi.
Én nagyjából ezt az algoritmust állítanám fel.
—————————————–'Első cella 'ciklus amíg nem üres az akt. cella ' s = akt. sor értéke ' ciklus amíg a ugyanaz aszöveg ' következő cella ' s = s + akt. sor értéke ' ciklus vége ' új sor beszúrás ' új sorba: "Összesen:" és mellé s ' következő cella 'ciklus vége
Imre
Szia!
Tehát ha a csoportok ismétlődhetnek, és valóban azt szeretnéd látni, amit leírtál a példában, akkor valóban makrót kell írni rá.
Ha soha nem programoztál, akkor ez egy kicsit nehéz lesz első feladatnak.
Hol tartasz makróprogramozásban?
Nyilván a feltételes formázás a legegyszerűbb.
Azokat a sorokat, ahol a „Jelzés a lejáratról” oszlopban kisebb vagy egyenlő dátum van, mint a mai nap, beszínezi.Az email küldéshez sokkal összetettebb dolgot kell csinálni:
Makrót kell írni, ami az előzőekben leírt feltételt megvizsgálja soronként, és ha teljesül küldd egy emailt (kinek is?)
Az illetőnek, vagy neked?
Problémák ezzel:
1. makrót kell írni, emiatt makrós lesz a fájl. Ez még megoldható, hogy a makró és az adat ne egy munkafüzetben legyen.
2. Figyelni kell, hogy kinek küldtünk már emailt, hogy ne küldözgessünk naponta figyelmeztetést. Erre be lehet vezetni egy külön oszlopot, amit a makró tölt ki.
3. Mivel küldjük az email-t? Össze kell lőni az Excel VBA-t és a használt levelező klienst
– Outlook? (Ez OK, ha van beállítva és működik, azaz tudsz Outlook-kal levelet küldeni) a többi már nem lesz olyan egyszerű
– gmail?
– egyéb?4. Mi az email szövege? Ez is nyilván változó, legalább a lejárat dátuma változik
Szóval a makrós email-es megoldás jóval összetettebb.
Ha viszont a feltételes formázásos dolog vége mindenképpen az lenne, hogy a megjelöltekre szűrsz és kézzel email-t írogatsz nekik, akkor érdemes makró irányba elmenni.
Ezek persze még hátra vannak, hogy elment-e a levél, megkapta-e a címzett, elég-e egyszer értesíteni, stb…
Ez más síkú problémaHa egyáltalán nincs makró ismereted, akkor ez nem lesz könnyű út.
Válassz!
Szia!
Mégis hogy gondolod a jelzést?
Színezze be a lejárathoz közeli dátumokat? Vagy az egész sort?Küldjön email-t?
Alert ablakban sorolja fel őket?
Csilingeljen? 🙂Külön oszlopban vannak a lejárati dátumok?
Imre
Szia!
Ha neked megfelelően működik, akkor használhatod úgy, ahogy felveszi a rögzítő.
De nem baj, ha a rögzítő féle struktúrált hivatkozást és a listobject megoldást is ismered egy-egy szituációban.Az anyagot elküldöm email-ben.
Imre
Szia!
Ez „sajnos” így működik by design.
Emiatt nekem is elég sokat kellett utánajárnom, mit hogy kell csinálni, ha Listobject típusú műveleteket akarok csinálni.A VBA tanfolyamon szoktam adni egy doksit, amiben összefoglalom a ListObject típusú műveleteket.
Van jó néhány oldal, ami ezzel foglalkozik, gondolom már rájuk találtál.Itt van például egy remek darab.
Imre
Szia!
Az a helyzet, hogy ilyen esetben azt szoktuk csinálni, hogy dinamikus névtartományokat hozunk létre a listaforrásokból. Ennek legegyszerűbb módja, ha táblázattá alakítjuk, és a belsejét elnevezzük, majd ezt a nevet adjuk meg listaforrásként.
A lépések:
1. csinálsz egy fejlécet a listának
2. beírsz pár elemet egymás alá
3. kijelölöd az egyiket
4. Beszúrás->Táblázat-> OK
5. Kijelölöd az adatokat fejléc nélkül
6. Képletek->Névkezelő (A táblázat már benne lesz)
7. Új…
8. Adsz neki egy nevet, lehetőleg egy szóból
9. Az adatérvényesítési szabályként a lista adatforrása: =névEzek után a listák végére új elemet írva, a táblázatok és vele együtt a név automatikusan kiterjed és az új elemek megjelennek a legördülő menüben.
Ezt csináld meg a másikra is.
Visszatöltöttem neked a megoldást.
Imre
-
A hozzászólás módosításra került: 8 years, 4 months telt el-
horvimi.
Attachments:
You must be logged in to view attached files.Nézet menü->Elrendezés -> Mozaik (Vízszintes vagy függőlege)s. Ha egymás mellé akarod, akkor vízszintes.
Ez az éppen nyitva lévő munkafüzeteket egymás mellé rendezi úgy, hogy fele-fele arányban kitöltsék a képernyőt.A Ctrl+TAB kombinációval vagy kattintással tudsz váltani közöttük.
Imre
Szia!
Nézd meg a feladatkezelőben, hogy az Excel esetleg nem fut-e két példányban.
A folyamatok között keresd, van-e két Excel.EXE?Valószínűleg ez a baj, azaz két példányban fut az Excel, és a forrás, illetve a cél munkafüzet külön példányokhoz tartozik.
Próbáld meg mindkettőt a Fájl->Megnyirtás paranccsal megnyitni a dupla kattintós megynitás helyett.Jelez vissza, hogy mi lett!
imre
-
A hozzászólás módosításra került: 8 years, 4 months telt el-
horvimi.
Szia!
Ezt így, ahogy leírtad, nem nagyon lehet megcsinálni, esetleg makróval, de van hasonló dolog.
Ki lehet jelölni területeket előre, és mindegyikhez lehet külön-külön jelszót rendelni.
Ha ezután levéded az egész munkalapot jelszó nélkül, akkor az egyes területeket külön-külön csak a hozzájuk rendelt jelszó beírása után lehet szerkeszteni.Magyar Excelben a Korrektúra lapon találsz egy Tartományok szerkesztésének engedélyezése gomb.
Ezután egymás után megadhatod a területeket és a jelszavakat.Segítség ehhez angolul
https://www.myonlinetraininghub.com/excel-protect-ranges-with-different-passwordsTehát neked (vagy a munkafüzet tulajdonosának) kell előre definiált sorokat egyesével felvenni, és jelszót adni hozzá.
Ez jó lehet neked?
Imre
-
A hozzászólás módosításra került: 8 years, 4 months telt el-
horvimi.
Az 1900.01.01-nél kisebb dátumokat nem kezeli dátumként az Excel.
Ez okozhat problémát.A forrás adatban miért vannak 1900-as dátumok?
Valami különbség képlettel számolódik a repülési idő?lehet, h ott nem dátum formátumban kellene számolni, hanem rendesen kiszámolni percben az értékeket.
A különbséget szorozni 24*60-al, kerekíteni és számmá formázni. Utóbbi nem lényeges.Imre
A lekérdezés8.jpg-ben azt látom, hogy a „Repült idő” oszlopban 1899-es dátum-idő értékek vannak.
Ez a problémás oszlop?
És ez nem okozhatja a problémát?Különben horvath.imre@pentaschool.hu a címem
Imre
Na ok, most látom mit csinálsz.
Ez, amit újnak nevezel a PowerQuery beépülő modul.
2016-ba be van építve alapból az Adatok fülön. Most éppen ezt tanulmányozom. Elég ÁLLAT!De megvan a jó öreg MS Query is, csak egy kicsit balra.
tehát NE az „Új lekérdezés” gombbal indulj, hanem az Adatok lapon az első nagy gombbal, a „Külső adatok…” a mi barátunk.
Itt meglesz minden, ami a régi MS Query-hez kell.A forrás változtatást MS Query-hez makróval lehet megcsinálni valóban a leginkább felhasználóbarát módon.
Ehhez segítség:
http://www.excelforum.com/excel-general/390063-ms-query-data-source-change.htmlImre
Különben a PowerQuery nagyon klassz, és ott is lehet Paraméter táblát csinálni, de nem annyira egyszerű, mint az MS Query-ben
Ha ragaszkodnál ehhez, akkor itt egy kis segítség:
https://blog.oraylis.de/2013/05/using-dynamic-parameter-values-in-power-query-queries/Szia!
Egy kicsit eljátszogattam vele, bár nem nagyon szoktam MS Query-t használni, legalább is nagyon rég jött szembe, Most újra megbizonyosodtam, hogy nagyszerű eszköz.
Paraméteres lekérdezés
————————–
Azt találtam a neten, és nekem bevált, ha SQL nézetben a Where feltételben az érték helyére egy kérdőjelet írtam.
A Query frissítésekor vagy futtatásakor kérdezi a paraméter értékét. Gondolom azt tudod, hogy ilyenkor megadható egy cella, ahonnan a paramétert vegye, sőt, megadható, hogy mindig innen vegye, vagy frissüljön a lekérdezés, ha változik a paraméter cella értéke.Kapcsolati útvonal
——————-
Ezt pedig ki lehet exportálni egy *.odc nevű fájlba. Ez XML formátumú, és tartalmazza a kapcsolat tulajdonságait, így a kapcsolat nevét és az útvonalat is.
Adatok->Kapcsolatok->Tulajdonságok->Definíció fül->Kapcsolatfájl ExportálásaÚj kapcsolatkor pedig be lehet importálni.
Tehát ha import előtt módosítod egy sima szerkesztővel, akkor az új gépen már a módosított útvonalon fogja keresni.
Ez két lépéses buli
1. Adatok->kapcsolatok->Hozzáadás… ->Kitallózod a módosított kapcsolati fájlt
2. Üres cella (munkalap)->Adatok->Meglévő kapcsolatok->KiválasztodErre gondoltál?
Imre
-
A hozzászólás módosításra került: 8 years, 4 months telt el-
horvimi.
Szia!
Találtam két oldalt, amelyeken lévő infók alapján készítette két makrót, ami UDF-ként is használható.
http://www.baanboard.com/baanboard/showthread.php?t=66577
A kínai karakterek UDF kódolásúak, nem ASCII karakterek, a kódjuk negatív.
Ez igaz lehet a Koreai, Arab, stb karakterekre is, nem teszteltem.A megoldást két oszlopba tettem, mindkettő másik függvényt használ.
Az első megszámolja, hogy hány un. non-ascii karakter van a B oszlopban.
Itt vannak olyan sorok, ahol ez 1-et ad, de a szövegben nem kínai, hanem más, pl.görög betű van.Neked szerintem a második oszlop lesz jó, ami megmondja, hogy van-e nullánál kisebb kódú karakter a B oszlopban
Szűrj az IGAZ sorokra!megnyitáskor, és mentéskor szólni fog a makrók miatt.
De más megoldást egyelőre nem találtam.Imre
Attachments:
You must be logged in to view attached files.Szia!
Jól értem, hogy a C oszlop utolsó adatának sora+1-től, az A oszlop utolsó adatának soráig kell törölnöd?
lehetnek üres cellák akár a C, akár az A oszlopban?utolso = Cells(Rows.Count, “C”).End(xlUp).Row
Ez csak akkor nem jó, ha valójában a C oszlopban lévő cellák nem üresek, hanem az A oszlop végéig azokban is van valami.
Próbáld ki az isempty() VBA függvénnyel, vagy au ISBLANK() munkalap függvénnyel.Imre
Szia!
Egy darabig elvoltam, mire megértettem amit kérdezel. 🙂
Talán sikerült.A megoldás az ÁTLAGHATÖBB függvény, aminek két feltételt kell adni, ráadásul a feltételeket cellából kell kiolvasni. Nem triviális, de megoldható.
Ha az alsó hatás az E2-ben, a felső határ az F2-ben van, akkor a megoldás ez lesz.=ÁTLAGHATÖBB(C2:C11;B2:B11;">="&E2;B2:B11;"<="&F2)
Visszatöltöttem, és külön fülre tettem a megoldást.
remélem jól értelmeztem a feladatot.
Imre
-
A hozzászólás módosításra került: 8 years, 5 months telt el-
horvimi.
Attachments:
You must be logged in to view attached files.Szia!
Ez nem hangzik túl jól.
Grafikonokban nem vagyok még nagyon otthon, de szívesen megpróbálok segíteni, viszont ehhez kellene egy minta, amit feltöltesz.Imre
Szia!
Hát Igen, ez nem egyszerű dolog.
Makró nélkül nemigen oldható meg.Én ezt csinálnám:
1. Felvennék egy kétoszlopos szótár tartományt. (Magyar és Angol megfelelőik)
2. Felvennék egy tartományt, ahová azoknak a celláknak a címeit írnám, amiket fordítani kell
3. A nyelvválasztó eseménykezelőjébe megírnám azt a makró programot, ami ha változik a nyelvválasztó értéke, és az nem egyezik meg a korábban ott lévővel, akkor a megadott cellákban kicserélgeti az értékeket a szótár alapján.Így az összes, legördülő lista adatforrásaként definiált tartományt csak egyszer kell magadni, de az aktuálisan kiejölt menüpontok lecserélődnek.
érdekes feladat.
Imre
Szia!
Hogy az adatok honnan jöttek, azt nem fogom tudni megmondani.
A technika, amit láttal, az az adott munkalap vagy munkafüzet „Change” eseményéhez rendelt eseménykezelő volt.Ez makróprogramozás téma.
meg lehet mondani az Excelnek, hogy ha megváltozik egy cella értéke, akkor mi történjen.
A Te esetedben megjelenített egy felhasználói űrlapot, amire előtte betöltötte annak az alkatrészben az adatait.
valószínűleg az azonosítója alapján kereste meg egy adatbázisban.
de hogy az mi volt, sé hol volt, azt csak annak a rendszernek atudói tudnák megmondani. Lehet, hogy egy távoli szerverről szedte le real-time.Imre
Kicsit utánanéztem a dolognak. Nem elsőre, de találtam egy Topic-ot, ami ezzel foglalkozik.
Itt vanEddig személyesen nem találkoztam ezzel a problémával, de úgy tűnik létezik.
Valószínűleg Excel 2013 BUG. Megkockáztatom, hogy ezen belül a 64 bites verzió hibázik, mert azzal szoktak bajok lenni.A központi szerver, amit említettél, milyen oprendszert futtat?
Távoli asztallal éred el?
64 bites Excel fut rajta?Nem találtam megoldást a dologra, csak azt, hogy Ne Excel 2013-ban csináld a rendezést.
Magánvéleményként még lenne ötletem, bár inkább érdekes kísérlet, mint valódi ötlet.
Ha a 2013-hoz feltennéd a PowerQuery bővítényt, és azzal olvasnád be az adatokat a rendezetleg táblázatból, és a PowerQuery-vel rendeztetnéd. Kíváncsi lennék az eredményre.Imre
Mit értesz azon, h nem megy?
Tölts fel mintát!Elvileg úgy van, hogy ha az add in-t engedélyezted, akkor az editorban a Project explorer ablakában (Ctrl-R) látszik az add-in, mint egy munkafüzet, vagy mint a PERSONAL.XLSB.
Ha itt szerkeszted a kódot, akkor menteni is lehet.
Ha itt is azt mondja, hogy read only, akkor még az lehet, hogy a fájl maga írásvédett lett valahogy.
Keresd meg a fájlrendszerben, és jobb klikk/tulajdonságok/írásvédett ki/be. Ezalatt természetesen ne fusson az Excel.
Hogy sikerült?
Imre
Szia!
Itt a javítás. Azt vizsgálja, hogy a „Total” szó mellett kettővel jobbra lévő cella üres-e.
Ha igen, akkor csak egy oszlop van, különben a szokásos.
Kipróbáltam, megcsinálta.Imre
Attachments:
You must be logged in to view attached files.Az a baj, hogy nem az oszlopokra hivatkozik a képlet, hanem csak a fejléc celláira.
Ez van ott most:
=COUNTIFS(Táblázat1[[#Headers];[1)Neme:]];$A11;Táblázat1[[#Headers];[7)Hallott már reform ételeket értékesítő éttermekről? (egészséges ételeket értékesítő éttermek)]];B$2)
Ennek kellene lennie:
=COUNTIFS(Táblázat1[1)Neme:];$A11;Táblázat1[7)Hallott már reform ételeket értékesítő éttermekről? (egészséges ételeket értékesítő éttermek)];B$2)
Máris kijön az 57-es eredmény
Ha jól látom, csak azt próbálgatjátok, h oszlop címzés helyett hogy lehetne struktúrált hivatkozással, táblázatban.
Az a baj, hogy ha egy struktúrált hivatkozást elmásolsz jobbra, akkor az oszlopok követni fogják a másolást. Tehát nem olyan egyszerű lekötni az oszlopokat.
Van rá megoldás, de nem túl triviális.Imre
Nem értem pontosan mit kérdezel, de a megtalált szövegrészt kicseréli arra, ami a párja a segédtáblában. Szóközökkel nem foglalkozik.
Legegyszerűbb,ha kipróbálsz mindenféle esetet, és ha kérdés merül fel, akkor szólj.
Legyen minta munkafüzet, amiben próbálkozol.Imre
Jó helyre tetted 🙂
Úgy működik, mint egy Excel munkalap függvény, tehát egy üres cellába állsz, és utána
Egyik lehetőség, hogy:
1. megnyomod az fx gombot a függvény beillesztéséhez
2. kategória: felhesználói
3. Ott kiválasztod ezt a függvényt
4. kattintgatással megadod a paramétereket úgy, ahogy a fenti képen csatoltam.Másik, gyorsabb lehetőség
1. Beírod, hogy: =subst_multiple(
2. fx vagy Ctrl+A
3. Megadod a paramétereketha megvan egy cella, akkor lehúzhatod az oszlopban, ha a módosítandó szövegeid oszlopban vannak.
FONTOS Info: A cserélendő listának egyedinek kell lennie. Ha lenne két vagy több olyan, amik ugyanúgy kezdődnek, vagy részben tartalmazzák egymást, akkor nem biztos, hogy jó cserét csinál.
Ha ilyenbe ütköznél, akkor kicsit módosítani kell a függvényt, hogy az első cserénél ugorjon ki a ciklusból, illetve a cserélendőket hosszuk szerint növekvőbe kell rendezni.
Meg még lehet vele egyéb gond is, ez a használat során fog kiderülni.
Kezdetnek biztos jó lesz.???
Imre
Szia!
Én azt csinálnám, hogy először cserével lecserélnék minden sortörést valami olyan karakterre, ami nem szokott előfordulni a szövegekben. Pl. csillag (*)
Ezután szövegből oszlopokkal már szétdobhatod egymás mellé.Az Alt+ENTER-nek a Ctrl+J a kódja, ha keresés-cserében gondolkodunk.
Ez jó lehet?
Imre
Szia!
ha össze tudsz rakni egy két oszlopos megfeleltetési táblát, hogy mit mire kell cserélni, akkor abból már lehetne dolgozni.
Összedobtam neked egy UDF-et.
Egy külön munkafüzetben tedd egy modulba, majd mentsd el.
A munkafüzet legyen nyitva, úgy tudod használni.Function subst_multiple(originalstring As String, findstrings As Range, subststrings As Range) As String Dim f As String Dim r As String Dim i As Long If findstrings.Rows.Count = subststrings.Rows.Count Then For i = 1 To findstrings.Rows.Count f = findstrings.Cells(i) r = subststrings.Cells(i) If InStr(originalstring, f) <> 0 Then originalstring = Replace(originalstring, f, r) End If Next subst_multiple = originalstring Else subst_multiple = "#Find and replace arrays must have the same size!" End If End Function
Majd szólj, hogy milyen…
Imre
-
A hozzászólás módosításra került: 8 years, 6 months telt el-
horvimi.
Szia!
Kicsit átalakítottam a képletet, hogy szövegre működjön.
Mindkettőre egyszerre nem tud, mert teljesen más képlet kellett szövegre.Szövegtöredéket keres a nevekben, nem kell, illetve nem szabad használni a joker karaktereket, azt nem érti, de nem is kell.
Ezt kerested?
Imre
Attachments:
You must be logged in to view attached files.Szia!
Ritkán csinálok ilyet, de volt kedvem hozzá.
Mellékesen szörnyű a formátum, részvétem…Szóval azt találtam ki, hogy végigkeresem az első oszlopot a „Totál” szavakra.
Az első kivételével minden „Totál-t” tartalmazó cella mellett kezdődik az átmásolandó tartomány, és a vége 12 sorral feljebb, annak a sornak a végén van.
Tehát ha „item” nevű range változóban megvan, hogy hol találta a „Totál” szót, akkor a másolandó tartomány így fogható meg:Set current_range = Range(Item.Offset(0, 1), Item.Offset(-12, 1).End(xlToRight))
Ezt másolni kell a tetején lévő folymatosan bővülő fejléc vége utánhoz.
Kb ennyi az algoritmus.
Az összeillesztésekhez tettem egy függőleges vonalat. ha nem kell, kiveheted.
Feltöltöttem
Ha OK, jössz egy sörrel.
Imre
Attachments:
You must be logged in to view attached files.Leprogramozni nem lesz időm.
Ha feltöltesz egy konkrét mintát, és ugyanabban a fájlban egy másik lapon kézzel egymás mögé másolva, hogy mit szeretnél látni megoldásnak, akkor talán jobban megértem a problémát, és tudok segíteni az algoritmusban.
Az összemásolt verzióban esetleg színezhetnéd a különböző forrásból érkezett darabokat.
imre
Galk!
Ez így rendben van, és ha Zsuzsa erre gondolt, akkor OK.
Én úgy értettem, hogy egy hónap adatait szeretné látni csak.
Tehát az augusztusi forgalom, és mellette augusztusig az összes.
Azért gondoltam ezt, mert a csatolt megoldás haladó szinten egy alap dolognak számítHa PIVOT-ban szűrsz egy hónapra, akkor a göngyölített is csak az egy látható értéket mutatja, aminek göngyölített összege ugyanaz lesz.
De lehet, hogy túlgondoltam.
ha Zsuzsa még ránéz, majd megmondja, mi volt a feladat.
Nagyon köszi!
Imre
Szia!
Ha az egymás mellé másolt adatok, és a végén a képletek is kellenek, akkor ezt makróval lehet megcsinálni. Feltéve, hogy mindig ugyanott vannak a forrástáblák, vagy könnyen megtalálhatók.
Ha csak az eredmény kell, ami tartalmazzon az azonos pozícióban lévő cellák összegét, akkor egyszerű adatösszesítésről (konszolidáció) van szó, amihez az Excelnek van beépített eszköze.
Kipróbáltam az általad küldött mintán, teljesen rendben van. (Adatok lap -> Összesítés parancs)Azt írja, hogy minden forrásnak és az eredménynek is külön munkalapon kel lennie, de ez nem igaz.
Kb itt a munkamenet:
1. A forrás táblákat tartalmazó lapon kijelölsz egy cellát, ahová az összesített adatokat szeretnéd majd tenni (bal felső sarok lesz itt)
2. Adatok->Összesítés (Egy párbeszéd jön)
3. A tetején megadod, hogy melyik függvénnyel
4. A Hivatkozásnál pedig kijelölsz egy forrást úgy, hogy a fejléc nincs benne (mert az változik), majd megnyomod a Hozzáadás gombot
5. Az előbbit megismétled annyiszor, ahány forrásod van
6. Végül megadod, h a feliratokat vegye a bal oszlopból (ezek mindenhol ugyanazok)
7. EnnyiAz eredmények értékként kerülnek a helyükre, de lehet csatolást kérni, így ha a források változnának, az eredmény automatikusan jön.
Ez változó számú forrásnál nem annyira életszerű.Imre
-
A hozzászólás módosításra került: 8 years, 7 months telt el-
horvimi.
Ezt egy PIVOT-ban sztem nem lehet megcsinálni.
Én azt tenném, hoyg ha megvan a havi bontású PIVOT, akkor mellette egy oszlopban képlettel kiszámolnám az addig a hónapig összesített adatokat.
Kell egy rész, ami a hónapból előállítja az adott hónap utolsó napját, és ezt adnám oda a SZUMHA (SUMIF) függvénynek, hogy adja össze az adott dátumnál korábbiakat.Feltételeztem, hogy az év az ugyanaz. Erre az információra a dátum összeállításában szükség van, vagy kell egy PIVOT oszlop az Évvel.
tölts fel egy mintát a PIVOT-tal, és visszatöltöm mire gondoltam.
Eggyel persze jobb lenne, ha megpróbálnád ez alapján megoldani.
Imre
Gyerekek!
A színezés sima feltételes formázás.
Ha egyik oszlopban lévő >= mint a másik oszlopban lévő, akkor színezze.Imre
Szia!
Ugyan nem egy képlettel, hanem néhnánnyal, de megoldottam.
A megoldást a Munka2 N oszlopától találod. A konkrétan keresett eredmény az S oszlopban.Ezért mondjuk vállon veregetem magam.
-
A hozzászólás módosításra került: 8 years, 7 months telt el-
horvimi.
Attachments:
You must be logged in to view attached files.Nem tudom mennyire érzékelted, de az a videó az én videóm.
Még egyszer mondom, hogy a probléma ott van,m hogy ha van két egyforma a Top 5-ben.Feltöltöm neked amit csináltam.
Imre
Attachments:
You must be logged in to view attached files.Kitaláltam rá valamit, de csak akkor működik jól, ha az 5-nél nagyobb Top 5-ben nincsenek egyforma értékek.
ha ez nem biztos, h teljesül, akkor hirtelen nincs rá ötletem azon kívül, hogy leprogramozni.
???
Szia!
Tölts fel egy mintafájlt!
Legyenek benne teszt adatok, és egy oszlopba konstansként beírva, hogy mit szeretnél eredményként látni!Imre
Szia!
Csak azt felejtetted el leírni, hogy most hogyan számoltok.
– Mit jelentenek a Munka1-en az első sorban az egy cellába írt, vesszővel elválasztott értékek?
– A Munka2 HUF oszlopána számítási menete kellene saját szöveggel leírva, mint egy munkafolyamat.Imre
Ha tömbökkel foglalkozol és keveset tudsz róluk akkor nézz át egy összefoglalót pl. itt
http://www.cpearson.com/excel/vbaarrays.htmA konkrét esetben a tömb számossága vagy elemszáma:
count=Ubound(nevek)
És ahogy a fenti válaszban írtam, az elvileg egy oszlopos dinamikus tömböt is két dimenziósként kezeli, aminek az oszlop része mindig 1-es.
Tehát a nevek(i) nem lesz jó, de jó lesz:nevek(i,1)
Imre
-
A hozzászólás módosításra került: 8 years, 7 months telt el-
horvimi.
Szia!
Én ezt találtam erre. Kipróbáltam, nekem működött
Előtte csináltam egy „nevek” nevű tömbkonstanst a névkezelőbe.={"Kovács András";"Tóth Zsuzsanna";"Kovács Béla";"Kiss József"}
A névkezelőből kolvasni egy töb elemeit az Evaluate függvénnyel lehet, ami a szögletes zárójel is egyben.
Sub get_array_from_named_range() Dim arr arr = [nevek] MsgBox (arr(1, 1)) MsgBox (arr(2, 1)) pos = WorksheetFunction.Match("Kovács András", arr, 0) MsgBox pos End Sub
Definiáltam egy dinamikus tömböt, majd beleolvastam a „nevek” tartományt
A tömb egy oszlopos lett, és az elemek egymás alatt, de sor,oszlop indexxel érhetők el úgy, hogy az oszlop index mindig 1-es
Tehát kiolvasom egy tömbváltozóba a névkonstans tömböt, majd abból kiolvasom az első sor első oszlop elemét, majd a második sor első elemét.A tömbben keresni lehet a megvalósított munkalapfügvényekkel is.
Ezt csinálom a második részben a match függvényel.erre gondoltál?
Imi
Na, erre nem számítottam.
Hát…Le tudnám programozni makróval, de képletes megoldásom most nincs erre, bocsi
Azért még megnézem, amikor nem éjjel fél kettő van…Imre
Ez most már kihívás nekem. Mármint, hogy összehozzam, hogy értsük egymást.
Az alapján, amit küldtél, nem lettem okosabb.
A „melyik sorban van találat…” értelmezhető úgy, hogy hányadik sor, és úgy is, hogy írjuk ki a sor adatait.
Stratégiát váltok, konkrétabban kérdezek vissza.
Ez a minta adat:Tól Ig 100 105 106 110 111 115
Mondjuk keresed a 101-et
MIT SZERETNÉL EREDMÉNYKÉNT KAPNI? (Látni az eredmény cellában)
——————————————————
A) 100 – 105 (Egy cellában így beírva, ami ugye szöveg lesz)
B) 100, 105 (Két egymás melletti cellában)
C) 105
D) 100, 101, 102, 103, 104, 105 (Egy cellában)
E) 100, 101, 102, 103, 104, 105 (Egymás melletti cellában)
F) 1 (mert az első sorban lévő 100 és 105 közé esik)Egyéb, éspedig:
???
-
A hozzászólás módosításra került: 8 years, 7 months telt el-
horvimi.
Ne haragudj, de tényleg nem értem.
Azt nem értem, hogy mit szeretnél eredményül látni.
Ilyenkor a legjobb, ha feltöltesz egy kis mintafájlt.
Ebben van:
Egy tól és egy ig oszlop
Gondolom egy olyan oszlop, ahol azok a számok vannak, amiket keresel
Engem az érdekel, hogy mi van az eredmény oszlopban, és az hol van? (Gondolom a keresendő számok mellett.)
És végül mi legyen akkor, ha a keresendő számot egyik intervallumban sem találta meg (ha lehet ilyen)
Ezt kérlek, kézzel egyszerűen írd be néhány sor esetén.Kérlek, még egy kicsit pontosíts:
– A két érték közötti összes szám kell?
– Ha igen, hogy jelenjenek meg? Egy cellában, vagy …?
– Ezek egész számok?
– A tól és az ig soha nem egyenlő?-
A hozzászólás módosításra került: 8 years, 7 months telt el-
horvimi.
Szia!
És mit szeretnél eredményül kapni?
Nem értem mi az a DIR nélkül.
DE:
1. A Dir simán az aktuális munkakönyvtárban keres.
Beállítottad? Én nem írtam bele a mintába2. Ha van olyan fájl a forrás mappában, ami a mintának megfelel, akkor az f értéke a fájl neve lesz
Próbáld ki az Immediate ablakban.
– Állítsd be chdir paranccsal a munkamappát oda, ahol a fájl van (ahol naponta cserélődik)
– Ird be ezt a parancsot: ?Dir(„valami_2016-08-26_utem_2-DOC*.txt”) (Nyilván a fájlnevet értelemszerűen írd)Erre vissza kell adnia a fájl nevét. valójában az első olyat adja vissza, ami illeszkedik a mintára. Tehát a „*” előtti rész állandó, a DOC utáni bármi, és txt a kiterjesztése.
A fenti kódot én lefuttattam, simán működött.
Szerintem nem jó helyen keres.Imre
Szia!
Ez egy klasszikus UNPIVOTING feladat.
A hőskorban erre makrót kellett írni.Aztán megjelent néhány Excel ADD-IN, ami megcsinálja, de nem találtam eddig ingyenest.
Viszont az új sláger, a PowerQuery ingyens add-in.Egy ideje már nézegetem. Excel 2010-hez és 2013-hoz letölthető, Excel 2016-ba már bele van építve.
Kb 1 perc volt, míg a problémádat megoldottamm vele. Konkrétan van ilyen menüpontja.
Egysezrűen zseniális.Itt egy leírás, hogyan kell csinálni.
Visszatöltöm a megoldást. Csak 1000 rekordot hagytam benne, hogy fel tudjam tölteni.
Imre
Attachments:
You must be logged in to view attached files.Szia!
Itt azt látom problémának, hogy a másolásnál a célfájl esetén szinte biztosan nme használható joker karakter. De az is lehet, hogy a forrásfájl esetében sem.
A dátum formát különben egyszerűbben is megadhatod:
format(date,"yyyy-mm-dd")
A másik kérdés, hogy a fenti módszerrel biztosan 1 db fájlra tudod-e szűkíteni a talált fájliok számát. A Filecopy csak egy fájlt tud egy időben másolni.
Ha a válasz IGEN, akkor Én azt csinálnám, hogy egy DIR paranccsal, * joker karakterel lekérném a fájl valódi nevét, azután már másolhatom.Sub masol() mainap = Format(Date, "yyyy-mm-dd") forrasmappa = "c:\ahol_a_fajl_van\" celmappa = "c:\ahova_masolni_akarod\" f = Dir("valami_" & mainap & "_utem_2-DOC*.txt") FileCopy forrasmappa & f, celmappa & f End Sub
Ez alapján sikerül?
Imre
Szia!
Az Excelben a szűrések nem dinamikusak, legyen az auto vagy haladó szűrés. Az új adatok esetén vagy adatmódosítás esetén újra kell futtatni a szűrést.
A Te problémád ez alapján úgy oldható meg, hogy az alaptábla módosítása esetén lefut egy eseménykezelő makró, ami szűri a kékeket, és kimásolja a kék munkalapra, majd szűri a pirosakat és másolja a piros munkalapra.
A kék és piros lapok korábbi tartalmait persze előbb törli.
Módosításnak számít új adat bevitele vagy meglévő módosítása.Ennek a módszernek 2 problémája van:
1. Minden cella módosításakor lefut. Ez akkor probléma, ha gyakran módosítasz a fő táblázatban, és sok adatod van.
2. A makrókat szeretik kiküszöbölni. Ez jogos is, csak akkor használjunk makrókat, ha anélkül nem oldható meg egy feladat.űMAKRÓMENTES MEGOLDÁS?
Hát, ki lehet próbálni valamit, amit egy korábbi cikkben írtam le.
Dinamikus szűrés tömbképlettel.
Ez a módszer sok adat esetén várhatóan lassú lesz, két szűrt munkalap esetén pedig pláne.
De néhány száz sorig egy jobb gépen elviselhető lehet a sebessége.Kicsit hozzá kell igazítani a Te problémádhoz, de megoldás lehet.
Próbáld meg!
Szia!
Hát ez egy klasszikus esete annak a helyzetnek, amikor adatbázis-kezelés feladatra akarunk Excel-t használni. Különben érthető, ha nincs adatbázis-kezelés ismeretünk, e van egy kevés józan eszünk, akkor egész jó adatmodelleket lehet Excel-ben is felállítani.
Az már egy jó indítás, hogy külön táblákban gondolkodsz, bár hogy miket tárolsz külön táblákban, azt átgondolnám, de talán így is lehet.
Ahogy Én csinálnám:
1. Van egy törzs tábla a termékeknek, ahol az oszlopok:
Termék_kód (cikkszám), Terméknév, Termékcsoport, Listaár2. van egy vevő törzs, ahol az oszlopok
Vevő_kód, vevőnév, amit még akarsz3. Engedmény tábla, ahol az oszlopok
Vevőkód, termékcsoport, kedvezmény mértékeEz a harmadik tábla kapcsolja össze a vevőket és a termékeket.
Ha jól értem, akkor az lenne a lényeg, hogy vevőnként tudj árlistát generálni, a nekik érvényes árengedményekkel számolva. A kedvezményt pedig nem termékenként, hanem termékcsoportonként adnád nekik.A listát egy db SQL lekérdezéssel meg lehet kapni a fenti modellből.
De szerintem Függvényekkel meg lehet csinálni Excel-ben is.
Azt csinálnám, hogy
– elsőként kitölteném a fenti 3 táblát
– Kezdenék egy negyedik táblát, ez lesz az eredmény tábla
– Ennek első oszlopai a cikkszámok (esetleg a terméknevek, ha kell), termékcsoportok és a listaár. Tulajdoképpen a terméktörzs tábla másolata. Csinálhatod copy-paste-el vagy hivatkozásos másolással.
– A negyedik oszlopban végig annak a vevőnek a kódja, akinek az árlistát csinálod
– A következő oszlopba a vevőkód és a termékcsoport alapján áthozod az engedmény táblából az adott vevőhöz és termékcsoporthoz tartozó engedményt. Ezt lehet két feltételes FKERES-el, de ebben az esetben lehetne SZUMHATÖBB függvénnyel is.
-Az ötödik oszlopban a listaár és a kedvezmény alapján számolod a kedvezményes árat.Ebből az 5 oszlopból neked csak a cikkszám és a kedvezményes ár kell, de ezt az utolsó lépést a fantáziádra bíznám.
Érthető nagyjából? És egyáltalán erre gondoltál?
Imre
-
A hozzászólás módosításra került: 8 years, 8 months telt el-
horvimi.
OK, feltöltök egy megoldást, ami megmondja, hogy az első munkalapon lévő szó, hányszor szerepel a második munkalap első oszlopában bárhol, akár mondatban is.
Ez egy tömbképlet, ezért ha hozzányúlsz, Ctrl-Shift-Enter-rel kell lezárni.
Hogy lásd a szerkesztőlécen aképlet elején és végén a kapcsos zárójeleket.A B2-be írtam a képletet, utána lehúztam az aljáig.
Ahol nullát kapsz, az a szö nem szerepel sehol a másik munkalapon.
Imre
Attachments:
You must be logged in to view attached files.Szia!
Nekem az még mindig nem világos, hogy mit szeretnél látni.
Ha azt, amit küldtél, azaz az első munkalapon pirossal jelölt szót pirosozzon ki a második munkalap minden előfordulásánál, akkor ehhez meg kell tanulnod programozni. Ez excel cuccokkal nem megoldható.
Ha azt szeretnéd, hogy az első munkalapon azokat a szavakat jelölje, formázza, amik előfordulnak a második munkalap bármely cellájában, akkor az már megoldható egy speciális képlettel és feltételes formázással.
Aztán olyat is lehet, hogy az első munkalapon egy következő oszlopban minden szó mellé írjon egy számot, hogy hány cellában fordul elő a második munkalapon.
Szóval melyik?
Igen, szerintem is a checkbox-ok és a fájlnevek összerendelésénél van a kulcspont.
Tehát amikor készíted a checkboxokat, akkor a .name tulajdonsággal lehetne a nevük a PDF fájl neve is.
.name=Cells(cell, "J").Value
A Copy files makróban pedig végig loopolsz az összes checkboxon, és amelyik be van kapcsolva, az olyan nevű fájlt az adott útvonalról másolod a kívánt helyre.
Sub loop_checkboxes() Dim cb As CheckBox For Each cb In ActiveSheet.CheckBoxes If cb.Value = xlOn Then MsgBox cb.Name 'Ide tehetnéd a másolást End If Next End Sub
Nyilván az útvonalak valahogy összeállnak string összefűzésekből, vagy bárhogy…
Imre
Ha a formázott táblán a TÁBLÁZAT-ot érted, azaz az árnyék verzió egy táblázattá alakított tartomány, akkor a válasz IGEN.
Ebben az esetben csak annyi a feladat, hogy a makró
1. Megnyitja az eredeti fájlt
2. Kijelöli a már kitöltött sorokat (fejléc nélkül)
3. Ctrl-C
4. Átváltás az árnyék verzióra
5. A fejléc alatti első cellához beillesztés értékkéntEz gyakorlatilag rögzítővel felvehető makró.
Mivel a beillesztett adatmennyiség valószínűleg nagyobb, mint amire ráírja, a táblázat automatikusan ki fog terjedni, és a későbbi oszlopokban lévő esetleges képletek automatikusan ki fognak terjedni az új mérethez.
Ha már működik, akkor csak nevezd el auto_open néven, és akkor a megnyitáskor automatikusan le fog futni mindig.
Szia!
Amiben feltöltesz, legyen eredeti, ami a másolat, legyen árnyék nevű. csak az érthetőség kedvéért.
Felvázolok 3 megoldást
A leggyorsabb, de kissé favágó módszer az lehetne, ha egyszerűen képlettel lemásolod az árnyék munkalapon az eredetit.
Ha az eredeti adataid pl. az ‘Eredeti’ munkalap A1-ben kezdődnek, akkor az árnyék munkalap A1-es cellájába felviszel egy egyenlőség jelet, majd átkattintasz az eredeti munkalap A1 cellájára.
Ezt azután addig másolod jobbra a kitöltő fogantyúval, amíg a fejléc tart. (meg fog jelenni a fejléc másolata.
Majd az egészet másold lefelé addig, amíg nullákat nem kapsz, azaz az eredeti lapon elfogynak a már kitöltött adatok. Ha jó előre lehúzod, azaz sok nullákkal teli sorod legyen, akkor egy darabig nyugodtan töltheted az eredetit, a kitöltött adatok automatikusan meg fognak jelenni ugyanott az árnyék verzióban is, ha azonos munkafüzetben vannak.
Az árnyék verzió lehet másik munkafüzetben is, de ebben az esetben csak akkor jelennek meg automatikusan az árnyék verzióban is az adatok, ha az nyitva van. Különben minden megnyitáskor kérdezni fogja, hogy frissítse-e a külső hivatkozásokat, és IGEN válasz esetén szinkronizálja az árnyék verziót az eredetivel. Ezt a kérdést letilthatjuk, és megmondhatjuk neki, hogy ne kérdezzen, csak automatikusan frissítsen.
——————————————————————————————
Ha ez a megoldás nem felel meg, mert nem képletként, hanem értékként szeretnéd látni az árnyék adatokat is, akkor makrót kell írni az eredeti munkafüzetbe, ami eseményként érzékeli egy cella tartalmának megváltozását.
Tehát ha egy cella értéke megváltozott, akkor az árnyék munkalap ogyanazon cellájába másoljuk át az új értéket. Sima eseménykezelés. Itt is lehetnek külön munkafüzetben, de akkor mindenképpen nyitva kell lennie mindkettőnek az adatbevitel során.
———————————————————————————————–
Ha időben el akarod és tudod különíteni az adatbevitelt és az árnyék lap megnyitását, illetve az eredeti és árnyék verziókat külön munkafüzetben tartanádakkor fordítva kell csinálni, és az árnyék fájlba kell makrót írni, amiben megnyitáskor automatikusan lefut egy makró, ami az eredeti adatokat értékként átmásolja az eredeti munkafüzet megadott lapjáról az árnyék munkafüzet megadott lap megadott tartományába.
És IGEN, az átmásolt oszlopok után lehetnek képlet oszlopok, amiket hozzá lehet húzni az átmásolt tartomány méretéhez.
A makró azt csinálná, hogy megnyitja az eredeti fájlt, majd átmásolja a megadott munkalapon lévő táblázatot az árnyék munkafüzet megadott tartományába.
Ha kell, a képlet oszlopokat hozzá igazítja.
——————————————————————————-
Lehet, hogy kissé hosszadalmasan írtam le, de én ezek közül választanék.Imre
Ha így csináltad ahogy a képeken van, akkor azt a problémát látom, hogy a 3. lépésben, amikor megadod, hogy dátum oszlopról van szó, a formátumnál nem azt kell megadni, hogy milyen formátumot szeretnél, hanem azt, hogy most milyen formátumban van. Neked pedig a dátumaid NHÉ formátumban vannak (21/03/2016)
A képen azt látom, hogy ÉHN-t állítottál be. Ez biztosan nem jó.Ha ez nem oldja meg a problémát, akkor marad a segédoszlop, és a képlet a DÁTUM függvénnyel.
Épp ma készítettem egy új cikket erről. Már csak a Videó van hátra.
Imre
Letöltöttem, kipróbáltam.
Nekem megcsinálja.
Office 365, Excel 2013NHÉ formátumot választottál?
Most látom, hogy a fenti képen hibás formátum van kiválasztva. A te dátumaid a fájlban Nap/Hónap/Év formátumúak, a képen HNÉ látszik, mert elbénáztam.Ja, és a villám kitöltés is működik nálam.
Szia!
Ha Office 365-öt használsz, akkor az 2013 vagy 2016 lesz.
Ebben az esetben delila megoldása mellett létezik egy nagyon egyszerű és gyors megoldás.
1. A rossz dátumok után beszúrsz egy új oszlopot
2. Az első sorba beírod a helyes, magyar dátumot
3. Adatok szalagon a Szövegből oszlopok gomb mellett találsz egy „Villám kitöltés” gombot.
4. Nyomd megÉs van még egy nagyon egyszerű, és minden Excel verzióban működő megoldás, a „Szövegből oszlopk” funkció. Ezzel kapásból, segédoszlop nélkül átalakíthatók a dátumok.
1. Angol dátumok oszlop kijelölése
2. Adatok->Szövegből oszlopok
3. Kétszer Tovább
4. A harmadik lépésben beállítod, hogy Dátum típusú, és kiválasztod a helyes sorrendet. A Te esetedben a NHÉ (Nap/Hónap/Év), mert az angol dátumaid így vannak.
5. A rendeltetési hely alapból az első kijelölt cellára mutat, tehát rá fogja írni az eredeti dátumokra az átalakított verziótMűködik?
Imre
-
A hozzászólás módosításra került: 8 years, 8 months telt el-
horvimi.
Szia!
A felső index megoldható, mert a kettesnek és a hármasnak van felső indexnek megfelelő külön karakter definíciója a betűkészletekben.
Ami biztosan működik:
1. Egy üres cellát válassz
2. Beszúrás szalag->Szimbólum (A szalag végén egy omega jel)
3. Keresd meg a kis felső kettest vagy hármast. A kisbetűk után nem sokkal.
4. Szúrd be a cellába
5. Szerkesztő módban másold ki a kis kettest vagy hármast (Ctrl-C)
6. Egyéni számformánál illeszd be a megfelelő pillanatban: 0,00″m²”;-0,00″m²”Persze a negatív részt csak akkor, ha lehetnk negatív számok is. Ez négyzet vagy köbméternél a való életben elég ritka.
Kipróbáltam, megy.
Neked?
Imre
Szia!
Az összes alakzathoz ugyanazt a makrót kell rendelned, de gondolom ez már megtörtént.
Van a VBA-ban egy
Application.Caller
objektum, Ezzel lehet lekérdezni, hogy mire kattintottak.Próbaként nézd meg ezt:
Sub proba() alakzat_neve = ActiveSheet.Shapes(Application.Caller).Name MsgBox alakzat_neve End Sub
Imre
Szia!
Ez egy klasszikus hiba, szinte mindenki elköveti, amikor egy képletben változót akar használni.
Az a gond, hogy a képlet valójában egy szöveg. Dupla idézőjellel kezdődik és záródik. ha ebben csak így simán beírod a változót, akkor annak a neve, és nem az értéke lesz a képletbe, mint szöveg.
Ezt próbáld:Activecell.FormulaR1C1 = _ "=INDEX('" & fc & ".xls'!C5,MATCH(RC1," & fc & ".xls'!C1,0))"
Ugye külön figyelni kell a szimpla idézőjelekre is.
A módszer lényege, hogy meg kell szakítanod a szöveget azon a helyen, ahová a változó megy. Jelen esetben az INDEX kezdete és a szimpla idézőjel után.
Befűzöd a változót, és tovább folytatod az eredeti stringet.
A változó következő előfordulásakor újból ugyanez a teendő.Imre
Igen, az megoldható, írtam is róla.
Szia!
Ha jól értelmezem, akkor nem munkafüzetről, hanem munkalapról van szó.
Egy munkalapon belül nem lehet ilyet csinálni, ilyen csak Word-ben van.
Olyat lehet, hogy az álló és fekvő részek külön munkalapokon vannak.
A tájolás munkalaponként állítható.
Nyomtatáskor pedig meg kell adni, hogy az egész munkafüzetet nyomtassa.Imre
Szia!
Nagyon köszönjük!
Horváth Imre
A táblázatos verziót számtalanszor csináltam. Most még egyszer kipróbáltam, működik.
Valamit nem jól csináltál szerintem.Miután táblázattá alakítottad, ki kell jelölni az adatokat, és a kijelölést külön elnevezni.
Ez nem lehet ugyanaz a név, mint a táblázaté.A lista adaforrásának a tartománynevet kell adni.
Ha az oszlopos megoldás OK, akkor végül is mindegy.
Imre
Igen van, két lehetőség is
Táblázatos
Ugye az a gond, hogy táblázatnevet (struktúrált hivatkozást) nem lehet adni adatérvényesítési lista adatforrásának. De tartománynevet lehet!
1. Az adatforrást táblázattá alakítod
2. Az adatokat (fejléc nélkül) elnevezed
3. A lista forrásaként ezt írod: =tartmánynévEgész oszlopos
A lista forrásaként az egész oszlopot megadod
Szia!
A minta alapján a feladat egyszerűbb, mint gondoltam. Csak tudni kell hozzá, hogy a feltétel szerinti megszámláló függvények (DARABTELI/COUNTIF, STB..) ismerik a joker karaktereket.
Ha jól értem, azt keresed, hogy egy teljes domain név (www.valami.hu) hányszor szerepel az
„1-organikus-találat” oszlopban, hányszor a „2-organikus-találat” oszlopban, stb…
Nem pontos egyezésre, hanem bárhol.
Ehhez a „*www.valami.hu*” szöveget kell keresni, illetve megszámoltatni.A megoldás tehát csak annyi, hogy a keresendő név elé és utána egy csillagot kell fűzni.
Szóval ha azt keresed, hogy az „F” oszlopban hányszor szerepel a B2-ben lévő domain név bárhol, akkor a képlet:=DARABTELI(F:F;"*"&$B2&"*"
Ha a keresendő domain cellájának oszlopát lerögzíted, és teljes oszlopokban keresel, akkor húzható lesz a képlet.
Visszatöltöttem a fájlt. Erre gondoltál?
Imre
Attachments:
You must be logged in to view attached files.Szia!
Ezt elég trükkösen, de meg lehet csinálni.
ha az F12-ben van az alsó határod, akkor a kritériumhoz ezt kell írni:
=">="&F12
A felső határnál értelemszerűen az E12-re hivatkozol.
Remélem sikerül, majd jelezz vissza!
Imre
-
A hozzászólás módosításra került: 8 years, 10 months telt el-
horvimi.
Szia!
Lenne egy ötletem, tölts fel egy mintát!
Imre
Szia!
Az első feladat félig meddig megoldható makró nélkül, de csak egyszer fog működni minden cégnél.
Ergo ezt is inkább makróval kellene megoldani.
A második probléma viszont csak eseménykezelős makróval oldható meg.Bővebben az első feladat
1. kell egy segédtábla, hogy mely cégnek mi az alapértelmezett fizetési módja.
2. A második legördülő menüben adatforrás az összes lehetséges fizetési mód.
3. Miután az első legördülővel választottál egy céget, ott lesz egy Worksheet_Change esemény, aminek a kezelőjét kell megírni, hogy a (gondolom) mellette lévő cellát töltse ki a segédtábla alapján a céghez rendelt fizetési móddal.Bővebben a második feladat
A második feladat kicsit bonyolultabb. Ugyanis ha törléskor vissza akarod állítani az eredeti képletet, akkor figyelni kell, hogy az új érték üres lett-e, és visszaírni a képletet.
Ha pedig egy egyéb érték, akkor azt benne hagyni.
És persze kiindulásként az eredeti képletnek kell a cellában lennie.Excel VBA eseménykezelésről alapszinten itt olvashatsz
http://www.excel-spreadsheet.com/vba/eventhandling.htmTermészetesen ezen kívül számtalan egyéb forrás található.
Imre
Ez is remek megoldás, köszi!
Hát, nem tudom mi zajlik nálad.
Én Win 10 alatt is használok néha Excel 2013-at, nincs vele gond.Ez teljesen jó, amit írtál, csak a „Sheet” szót többes számba kell tenni.
Tehát
Sheets(“Munka2”).Range(“c78”).Value = Sheets(“Munka2”).Range(“c78”).Value + 1
Imre
-
A hozzászólás módosításra került: 8 years, 1 month telt el-
-
SzerzőBejegyzés