Hirdetés
-
Újabb államok perelik az Apple-t, mert sok pénzt szed ki a vevőkből
it Négy újabb amerikai állam csatlakozott az USA Apple ellen indított, monopolellenes peréhez.
-
Computex 2024: évente hozna új Instinct gyorsítót az AMD
ph A vállalat a Radeon Pro W7900-at is frissítette, de itt sok változásra nem kell számítani.
-
Honor 200 Lite - nem százas a kétszázas
ma A jóval drágább és többet tudó testvérek farvizén próbál a Honor 200 Lite vásárlókat behúzni, a független piacon most sem versenyképes.
-
Mobilarena
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
-
Fferi50
őstag
válasz Misi_D #42744 üzenetére
Szia!
Használhatod hozzá a Solvert. A napi értékesítések mellé felveszel két segédoszlopot. Az egyikbe 0 és 1 kerül, a másikba az értékesítés és a mellette levő 1/0 szorzata. Ennek az összegét kell célértékként megadnod. Változóként pedig a 0/1-es oszlopot. Továbbá korlátozni kell ennek az oszlopnak a felvehető értékeit 0 és 1-re.Üdv.
-
Delila_1
Topikgazda
válasz Misi_D #42744 üzenetére
Láthatsz egy képpel illusztrált példát a megoldásra itt.
Feltöltöd a C oszlopot nullákkal, majd indítod a Solvert az Adatok menü Elemzés csoportjában. Ha nem találod, előbb a Beállítások | Bővítményeknél be kell jelölnöd a Solvert.[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Misi_D #45219 üzenetére
Nem biztos, hogy jól értem a feladatot.
A képen a betöltött adatok azA:C
oszlopokban vannak. A G oszlopban az Ismétlődések eltávolítása funkcióval minden ID értéket egyszer szerepeltettem.
A H2 képlete=INDEX($A$1:$C$15;HOL.VAN($G2;$A$1:$A$15);2)
, az I2-é=INDEX($A$1:$C$15;HOL.VAN($G2;$A$1:$A$15);3)
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
-
Fferi50
őstag
válasz Misi_D #45224 üzenetére
Szia!
Excelben van lehetőség arra is, hogy egy fájlt direkt eléréssel nyiss meg és olvass be. Így megoldható, hogy csak azt a rekordot tedd be a munkalapra, amelyikre szükséged van.
Itt a példa:Sub beolvaso()
Dim utja As String, fnev As String, kinput As String, fc As Byte
utja = "C:\Users\user\Documents"
fnev = "\xxx.csv"
fc = FreeFile()
Open utja & fnev For Input As #fc ' file megnyitása
Do While Not EOF(fc)
Line Input #fc, kinput 'egy teljes sor beolvasása a fájlból
MsgBox kinput 'itt megnézheted, mit olvastál be, ennek a helyére ill. ez után jöhet feldolgozás
Loop
Close #fc ' fájl bezárása
End Sub
Ez csak a fájlművelet, természetesen az excel munkalap kezelését is meg kell oldanod előtte illetve közben.
Remélem hasznos lesz neked.
Itt találsz a Line Input-ról súgót, illetve innen megtalálod a direkt fájlkezelés példáit is. [link]
Üdv.[ Szerkesztve ]
-
Fferi50
őstag
válasz Misi_D #45226 üzenetére
Szia!
Egy lehetőség, logikai szinten leírva:
Az első előfordulást beteszed a munkalap következő sorába. A következő előfordulásnál megkeresed, hol van a munkalapon, megnézed a másik változó értéke milyen, ha nagyobb, akkor kicseréled a sort az újra, ha nem, akkor hagyod békében.
Ezt csinálod végig a fájlon.
Előny, hogy akkor is használható, ha a csv fájlban nem sorban vannak az ID-k.
A munkalapon kereshetsz a Range.Find metódussal vagy kereső függvényekkel egyaránt.
A beolvasásnál a kinput változóban a teljes sor kerül. Ebből neked kell meghatározni, hol az id és a számodra szükséges változó adata. Ha tudod, hogy hanyadik oszlopban van, akkor pl. használhatod a Split függvényt, amelyik a megadott határoló (pl. pontosvessző - ; - ) szerint egy tömbbe transzformálja a szöveget. A tömb indexe 0-val indul. Innen már meg tudod kapni a keresett adatokat.
Egy példa:Sub beolvaso()
Dim utja As String, fnev As String, kinput As String, fc As Byte, cl As Range, bejott, holvan As Range
utja = "C:\Users\user\Documents"
fnev = "\xxx.csv"
fc = FreeFile()
Open utja & fnev For Input As #fc
Set cl = ActiveSheet.Cells(1, 1) 'az aktív munkalap első cellájába kerül az első adat
'ha nem ide szeretnéd, akkor változtasd meg a Cells paramétereit
Do While Not EOF(fc)
Line Input #fc, kinput
bejott = Split(kinput, ";") 'egy tömbbe transzformáljuk a bejött adatot
'megkeressük az azonosítót az első oszlopban. Ha nem ide tetted, akkor írd át az oszlop számát
'ha nem az input első adata az ID akkor bejott(0) paraméterét írd át a megfelelő oszlopra
Set holvan = ActiveSheet.Columns(1).Find(what:=bejott(0), LookIn:=xlValues, lookat:=xlWhole)
If holvan Is Nothing Then 'ha még nincs, akkor bejegyezzük az első szabad sorba
'cl.Value = kinput 'ez a sor egy cellába tenné a teljes inputot
Range(cl, cl.Offset(0, UBound(bejott))).Value = bejott ' így viszont külön cellába kerülnek az értékek
Set cl = cl.Offset(1, 0) 'ez lesz a következő üres sor első cellája
Else
If holvan.Offset(0, 2).Value < bejott(2) Then 'ha a változó nem a második az adatok között, akkor
'mindkét 2-est írd át megfelelőre - az offset és a tömb paramétere is 0-tól indul.
Range(holvan, holvan.Offset(0, UBound(bejott))).Value = bejott 'kicseréljük az újra
End If
'MsgBox kinput
End If
Loop
Close #fc
MsgBox "Az input kész!"
End Sub
Remélem, sikerül.
Üdv. -
Mutt
aktív tag
válasz Misi_D #45222 üzenetére
Szia,
Ezt próbáld ki.
1. Fájl importálása Power Query-be.
2. Majd csoportosítás és a keresd meg id-nként a ciklusszámláló maximumát.
3. Most jön egy furcsa lépés, de így a legyegyszerűbb. Szóval lekérdezések egyesítése és ott válaszd ki a táblát kétszer és add meg hogy az id és a ciklusszámláló alapján keressen belső egyezést.
4. Jön a második furcsa lépés, de ehhez M-kódot kell módosítani. A szerkesztő lécen vmi ilyen kód lesz:Ahol a #"Sorok csoportosítva" egy hivatkozás egy korábbi lépésre aminek egy tábla az eredménye. Power Query-ben nem kötelező a közvetlen előző lépésre hivatkozni, lehet bármelyik korábbira hivatkozni. Nekünk pedig az a lépés kell ami még az eredeti (nem csoportosított adatsort) tartalmazza. Az én esetmben ezt a lépést "Típus módosítva"-nak hívják. Még egy módosítás kell, "max" oszlop nincs az eredeti táblázatban hanem ott nekem "counter" van ezt is le kell cserélni.
Ha ezeket javítod akkor ez lesz az eredmény:
5. Most már csak ki kell bontanod a Sorok csoportosítva oszlopot és megkapod kívánt eredményt.
üdv.
Ps. Ha a nagy fájl miatt lassú lenne a feldolgozás, akkor még egy trükk. Lehet puffereltetni egy adott táblát.
Az én esetemben a "Típus módosítva"-t érdemes. Ehhez azt kell csinálni, hogy ezen lépés után beszúrsz egy új lépést (pl. új oszlop hozzáadása). Majd a kapott M-kódot felülírod ezzel: = Table.Buffer(#"Típus módosítva")A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Fferi50
őstag
-
Mutt
aktív tag
válasz Misi_D #49483 üzenetére
Szia,
A héten tanultam, hogy Pivot-ban a sor értékeket át lehet nevezni. Állj rá az "(üres)" cellára és fent a szerkesztő lécben (vagy F2-vel helyben) írd át egy szóközre az értéket.
Visszacsinálni ezt trükkös, de kb. 10-et visszaolvasva látsz tőlem egy makrós megoldást, illetve az eredeti kérdezőtől egy másikat.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
Új hozzászólás Aktív témák
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Adobe Előfizetések - Adobe Creative Cloud All Apps, Photography Plan - 12 Hónap
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen