- bitpork: Augusztus 2- szombat jelen állás szerint.
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- eBay-es kütyük kis pénzért
- Luck Dragon: Asszociációs játék. :)
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
- Fogkefe: elektromos vagy manuális?
- Magga: PLEX: multimédia az egész lakásban
- Parci: Milyen mosógépet vegyek?
-
LOGOUT
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
-
azopi74
addikt
válasz
Csuklósbusz #25998 üzenetére
És az 1000-res és 500-as szándékosan maradt ki?
Ha pl az A oszlopban vannak az összegegek, és az első sorban B-től M-ig a címletek, akkor B2-be ezt írd: =INT(A2/B1)
C2-be pedig ezt: =INT(MOD($A2,B1)/C1) , és utána húzd el jobbra, az utolsó címletig .Aztán húzd le az egészet az utolső összegig
Van sokkal szebb megoldás is, de nem akarlak elijeszteni, mert azt mondanád rá hogy bonylult
(Képletfordításhoz: http://hu.excel-translator.de/)
-
Csuklósbusz
tag
Illetve pofonegyszerű kérdés mégse megy.
Vannak sorok amikbe vannak adatok majd üres mezők és utánna a többi.
Hogyan lehetne megoldani hogy sorszámozzam úgy hogy az üres mezőket ne vegye figyelembe?
Pl így van beírva
xy
xy
xcfdf
fef
fef
fés így szeretném, tehát csak számolja meg és írja oda elé a sorszámot:
1. xy
2. xy
3. xc4. fdf
5. fef
6. fef
7. fÁtvitt értelemben: mint egy könyvet szeretnék oldalszámozni, csak az olyan oldalakat ne számolja bele amin nincs semmi, na ugyanezt csak az üres sorokat ne számolja, csak azt amit kijelöltem.
-
azopi74
addikt
válasz
Csuklósbusz #25995 üzenetére
Az összes lehetőséget kidobja, vagy csak a legegyszerűbbet (legkevesebb darabszámút)?
-
azopi74
addikt
válasz
Csuklósbusz #25994 üzenetére
Nem értem, mi a gond. Ennél egyszerűbben nem nagyon lehet megoldani. Ez is simán excel.
Te mondtad, hogy adatbázisként használod az excelt (amire szerintem amúgy egészségesebb lenne egy adatbáziskezelő, de nem baj)
De ha így használod, akkor abból a lekérdezéket jelenleg MS Query-vel tudod megoldani.
Ha Excel 2010 van legalább, és a PowerQuery bővítvény is fent van, akkor grafikus felületen, SQL nélkül is megtudod ugyanezt csinálni némileg felhasználóbarátabb módon (MS Query-vel is tudsz grafikusan queryt csinálni, de csak nagyon egyszerűeket)"Hogy a név, utca, hsz, összeg, közül a táblázat alulra egy mezőbe újra kiírja a legnagyobb és legkissebb összegűeket... ?"
Egy mezőbe hogy tudsz több sort írni?
Olyat tudnál még csinálni, hogy a lenagyobb összegűt kikeresed (MAX függvény), és VLOOKUP-olod hozzá a többit is, de ez csak sorban az első találatot fogja kihozni, nem az összeset.
-
Csuklósbusz
tag
De ha ennyire bonyolult akkor hagyjuk is.
És azt hogyan lehetne megcsinálni, excellben hogy a kifizetéshez szükséges címleteket kilistázza?
Tehát pl van 40520, 2365, 330, 112395 stb összegem, ezekből pedig listázni hogy a kifizetéshez akkor:
x db: 20 ezres
x db: 10 ezres
x db: 5 ezres,
x db kétezres
x db 200 Ft -os érme
x db 100 Ft-os
x db 50 Ft-os
x db 20-as stb stbkellene kiosztani hogy mindenkinek kilehessen kézbesíteni fillérre pontosan?
-
azopi74
addikt
válasz
Csuklósbusz #25991 üzenetére
A legnagyobb nyugdíjúakat?
MS Query-be tedd be ezt az SQL statementet (Data/From Other Sources/From Microsoft Query/Excel Files) :
SELECT * FROM `C:\Users\Peter\Desktop\Book2.xlsx`.`Sheet1$` `Sheet1$`
WHERE Nyugdíj IN (SELECT
MAX(Nyugdíj) FROM `C:\Users\Peter\Desktop\Book2.xlsx`.`Sheet1$` `Sheet1$`)Természetesen a saját file-od és munkalapod elérési útjával.
-
azopi74
addikt
válasz
Delila_1 #25988 üzenetére
Szia, köszi szépen
Na ezen felbuzdulva, gondoltam összedobok egy olyan UDF tömbfüggvényt, ami visszaad visszatérési értékként egy tömböt, ami tartalmazza a paraméterként megadott tartomány celláinak színeit.
Így próbáltam:
Function IntColor2(szines As Range)
Dim k As Long
Dim ArrayCol() As Long
k = szines.Rows.Count
ReDim ArrayCol(1 To k) As Long
Dim Cell As Range
Dim i As Long
i = 1
For Each Cell In szines
ArrayCol(i) = Cell.Interior.ColorIndex
i = i + 1
Next
IntColor2 = ArrayCol()
End FunctionDe az első cella színét adja vissza a tömb összes elemeként.
Amit nem igazán értek, hiszen az alábbi eljárás - ami gyakorlatilag ugyanezt csinálja, csak eljárásban - pedig jól működik (kiírattam a tömb értékeit, és jó) :
Sub IntColor3()
Dim ArrayCol() As Long
Dim Cell As Range
Dim szines As Range
Dim i As Long
Dim k As Long
i = 1
Set szines = Range("A1:A20")
k = szines.Rows.Count
ReDim ArrayCol(1 To k) As Long
For Each Cell In szines
ArrayCol(i) = Cell.Interior.ColorIndex
i = i + 1
Next
End SubMi lehet a probléma az UDF-fel?
-
Csuklósbusz
tag
Sziasztok!
Adott egy excell adatbázis, nevekkel,címmel, és a nyugdíjja összegével. Hogyan lehet listáztatni a legnagyobbat úgy hogy ne csak a számot hanem az egész sort ( név, cím) is kimásolja a rendszer?
Office 2007-es van nekem.
Előre is köszi! -
Musuz
csendes tag
Sziasztok
azt szeretném megoldani,hogy egy képlet kiszámítását az excel gombnyomásra hajtsa végre.
a munka1 táblájának 1. számú sorában vannak a beviteli cellák.
a számozott sorokban jelennek majd meg az eredmények,alattuk pedig legördülő listák vannak.
munka1:a munka2-ön levő tábla adatai vannak a legördülőkben és ezek a számok adódnak hozzá a
kívánt értékhez.ezt szeretném nyomógombbal megoldani:
példa a munka1 d55-ös cellájába:
=d53+fkeres(d54;munka2!c4:c18;hamis) -
azopi74
addikt
Nem is fogod tudni sajnos VBA nélkül. Nincs sajnos olyan függvény excel-ben, ami visszadná a cella színét
Csinálnod kell egy ilyen UDF-t.
Function IntColor(CellColor As Range)
IntColor = CellColor.Interior.ColorIndex
End FunctionUtána ezt behívhatod egy segédoszlopba, és arra hivatkozva vlookup-olhatsz, sumif-elhetsz, match-elhetsz, vagy amit akarsz.. Vagy meghívhatod egy másik udf-ből vagy eljárásból.
Sajnos tömbfüggvényben nem lehet használni UDF-et, pl egy olyan nem fog működni, hogy {=MATCH(48,IntColor(A:A),0)}
pedig bármilyen beépített függvény esetén működik. (pl {=MATCH(-1,SIGN(A:A),0)}Azt nem értem, hogy miért nem, az is lehet, hogy csak alakítani kéne valamit az UDF-en, hogy működjön tömbfüggvényben is. VBA mesterek közül valakinek van ilyenre megoldása ?
-
Musuz
csendes tag
Sziasztok
kérnék egy kis segítséget
példa:
ha az A1 cella értéke 500,és ezt megjelölöm zöld színnel,
akkor hogyan tudom a színe alapján megjeleníteni mondjuk a K45-ös cellában.
a HA és FKERES függvényekkel próbálkoztam,sajna nem megy.
bárki,köszi. -
azopi74
addikt
Tehát jól értem, hogy egy UDF-et akarsz létrehozni VBA-ban, aminek a paraméterei legyen "név", "sz", "az" és "ál", és adja vissza azoknak a mennyiségeknek (minden lap d oszlopa) az összegét, amik a "név" munkalapon vannak, és a "sz", "az" és "ál" oszlopokban szereplő érték egyezik a paraméterként átadott értékekkel? Jól értem?
-
azopi74
addikt
válasz
w.miki #25978 üzenetére
Most olvasom, beírni? Eddig arról volt szó, hogy másolni akarsz, nem?
Szóval néha, másolgatsz, sokat, ugyanoda, néha meg manuálisan rögzíted ?
Akkor állítsd be textre fixen, és akkor jó lesz. Ha máshonnan másolod, hozni fogja az eredeti forrás formátumát, ha meg rögzítesz, marad a text. De utána ne piszkáld az egész tartományt, és ne akard kijelölni az egészet, és állítgatni a formátumokat, akkor se, ha csúnya
Ha esztétikán akarsz javítani zárd jobbra vagy balra , az nem módosítja a tartalmat és a formátumokat.
-
azopi74
addikt
Ha az IMEI hossza is változhat (bár az úgy tudom, fix), akkor nem fogod tudni így megoldani, ha azt akarod, hogy minden úgy maradjon, ahogy eredetileg volt, és az bármilyen formátumú, hosszú lehet, akkor marad az eredeti megoldás, ne piszkáld, csak másold át az ereditit sima Ctrl-C Ctrl-V-vel, így minden úgy marad, ahogy eredetileg volt.
Persze, így nem lesz túl esztétikus a kimenet, ha különböző forrásokból származnak -
w.miki
veterán
-
azopi74
addikt
válasz
azopi74 #25970 üzenetére
Ja bocs, ha a kezdő 0-kat meg akarod hagyni, ez nem megoldás. Az hogy hány 0-val kezdődik, az fix, vagy bármennyi lehet? (Nem vagyok otthon IMEI témában annyira.)
Talán érdemesebb lenni mégis szövegként kezelni. Az nem jó neked? Úgy biztosan megmaradnának a 0-k az elején.
-
azopi74
addikt
válasz
w.miki #25967 üzenetére
Jobbegér, cellaformázás, egyedi (Format Cells, Custom):
Azt hiszem, ilyen az IMEI nemzetközileg elfogadott formátuma, ezt állítsd be:
##" "######" "######" "#
de ha, akarod, akkor olyan elválasztásokat raksz be, amiket akarsz, olyan tagolásban, ahogy akarod
Így szám marad, és a formátum is megfelelő lesz.
Le is akarod validálni a 15. ellenőrző számjegyet (check digit) ?
-
w.miki
veterán
Excelt hogyan lehetne úgy beállítani, hogy ha beírok egy (IMEI) számot, akár 0val kezdődőt is, ne konvertálja már át nekem más formátumba, hanem hagyja békén, úgy ahogy beírtam, de attól még legyen szám a formátuma, ha lehet, ha nem az se muszáj, csak ne piszkálja!
-
azopi74
addikt
válasz
TrollBalint #25957 üzenetére
Woww, egy kicsit elkapkodtam.
Nem az a gond, hogy nem egy napon van a képlet szerint (nem is azt jelenti pontosan a WithinOneDay változóm (tudom megtévesztő nevet adtam neki) hogy egy egy napon van, hanem azt, hogy egy napi munkaidőblokkban. (vagyis egy napon, reggel 9 és du 5 között, munkaidőben)
A problémát más okozza, mégpedig a FullWorkingTime változó. Ugyanis egy nap nem 24 munkaóra van, hanem csak 8
Ezért a képlet helyesen:
=COUNTIFS(DayType[StartWorkingTime],">="&[StartTime],DayType[EndWorkingTime],"<="&[@EndTime],DayType[Type],"Workday")
helyett:
=COUNTIFS(DayType[StartWorkingTime],">="&[StartTime],DayType[EndWorkingTime],"<="&[@EndTime],DayType[Type],"Workday")/3
Köszi az észrevételt, javítottam. (link változatlan)
-
azopi74
addikt
Szia, mit szeretnél egész pontosan elérni? Mert attól tartok, ez nem nagyon derült ki ebből.
Legközelebb, ha választ szeretnél a kérdésedre, javaslom, töltsd fel valahova a fájlt, amivel dolgoznál (ha bizalmas adatok vanna benne, természetesen cseréld le az értéküket valamire), és azt is próbááld megfogalmazni, hogy pontosan mi a kimenet, amit el szeretnél érni, mert ezek nélkül elég nehéz értelmezni ezt. Mit akarsz SUMIFS-elni, mire kell a makró, mi a pontos feladat?
Csak intuitív módon próbálom kitalálni: cikkszámonként és nevenként akarsz összesíteni a különállő munkalapokról, amik valamiféle forgalmakat tartalmaznak nevenként?
B2-be írd be:
=SUMIFS(INDIRECT(B$1&"!"&"B:B"),INDIRECT(B$1&"!"&"A:A"),alap!$A2)
És húzd a képletet minden irányba.
Mivel nem ismerem az adataid pontos struktúráját/elhelyezkedését, ezért természetesen ezt annak megfelelően módosítsd majd . Bár azt még mindig nem értem, mi a szerepe a makrónak ebben az egészben -
gdodi
csendes tag
Sziasztok!
Kérlek segítsetek megoldani az alábbi problémámat!
Egy munkalap felső sorában nevek vannak, a "B1" cellától kezdve, kb.20, de ez a mennyiség változik. Ezek egy "ml" változóval lettek beíratva. Ugyanennyi munkalap készült ezekre a nevekre átnevezve, és fel lett töltve adatokkal. A kiindulási munkalapon az "A2" cellától lefelé van egy csomó adat, nevezzük cikkszámnak. Ezek mellé szeretnék az összes többi lapról a nevének megfelelő oszlopba (makróval) a szumhatöbb függvénnyel adatokat átvinni, az alábbi szerint:
Range("B2").Select
ActiveCell.FormulaR1C1 = "=SUMIFS('ml'!C[1],'ml'!C[-2],RC[-8],'ml'!C,1)"
Nem tudom, hogy lehet megoldani, hogy az"ml" helyett a munkalapok neve szerepeljen.
(A többi része talán menni fog.)
Előre is kösznöm! -
Fferi50
Topikgazda
válasz
Chesterfield #25955 üzenetére
Szia!
Nézd meg légyszives a feltételes formázás beállításait.
Üdv.
-
Delila_1
veterán
válasz
slashing #25958 üzenetére
Ilyen feladatoknál használható.
Amire figyelni kell: ha a felső sor, és/vagy a bal oszlop megnevezései szóközt tartalmaznak, akkor a létrehozott névben a szóköz helyett alsó kötjel lesz. Pl. a Címsor 1-ből Címsor_1 lesz. Ilyen esetben a példa szerinti érvényesítés értékét egy másik cellában szövegfüggvénnyel át kell alakítani a Címsor_1 formára, és erre kell hivatkozni a metszet operátorral. Ez túl bonyolult, érdemes inkább Címsor1 formát alkalmazni, vagy eleve Címsor_1 legyen a sor-, vagy oszlopfejben.
Más függvénybe beágyazva nem próbáltam még, majd később... Avagy: Tiéd a pálya!
-
zhari
csendes tag
válasz
Chesterfield #25955 üzenetére
Vízszintes igazítás a kijelölés közepére?
-
Chesterfield
őstag
Ez a szegély miféle cellatulajdonság?
Nem tudom kivenni sehogysem, a szegélyen belül azt mutatja, hogy nincs semmi beállítva. -
Delila_1
veterán
Pirit28 válasza tökéletes.
Feltettem egy másik megoldást, mert ez kevéssé ismert. -
TrollBalint
addikt
válasz
azopi74 #25942 üzenetére
Azt nem ígérem, hogy ma tudok felrakni, lehet csak hétvégén. Összesítő sor nincs az alján, viszont vastag kerettel veszi körbe, amiről azt hittem formázás, de nem tudom kitörölni. Próbáltam, hogy megszüntetem a táblát, és újra létrehozom, de akkor se szúr be új sort. A táblázat jobb alsó sarkában van egy kis (talán zöld) pötty, amivel tudom növelni a méretét, de igazából automatikusan szeretném ezt megoldani.
Most hogy belegondolok, az oszlopokat se fűzte hozzá, amiket pluszba szúrtam be.
-
#02644736
törölt tag
Sziasztok!
Van egy excelem, ami tartalmaz grafikonokat. A grafikonon van fekete vonal, fekete pöttyözött vonal, illetve pontok is vannak rajta feltüntetve.
Eddig a kijelölését simán meg tudtam változtatni gond nélkül. Most olyat csinál, hogy amikor megváltoztatom bármelyiknek a kijelölését (honnan vegye az adatot), megváltoztatja a stílust. Bárminek is változtatom meg a kijelölést, kék vonallal ábrázolja a grafikonon. Még azt is, ami korábban pontként volt ábrázolva.
Az excel az 2013-as, de eddig is ezt használtam, és nem volt gond.
Remélem érthetően fogalmaztam, ha nem, akkor tudok képet felrakni. -
azopi74
addikt
válasz
molacika91 #25944 üzenetére
Szia,
Sokat agyaltam rajta, de makró nélkül csak iterációval és három segédoszloppal tudtam megoldani. Bár aki nagyon profi named ranges-ben, az talán meg tudja oldani segédoszlopok nélkül is, nekem nem akart összejönni valahogy, ehhez még kicsi vagyok, el kell jobban mélyednem a témában
A lényeg, hogy csináld a következőt:
Először is állítsd be az iterációt 2-re.
(File-Options-Formulas-Enable iterations)
Ha a oszlopot akarod figyelni, menjen b2-be a következő:
=IF(AND(A2<>"",C2<>A2),NOW(),IF(A2="","N/A",B2))
c2-be ez:
=IF(A2="","",IF(OR(B2="",AND(ISNUMBER(C2),A2=C2)),C2,A2))
d2-be meg ez:
=B2=MAX(B
)
Aztán feltételes formázásba állítsd be ezt a feltételt.
=D2=TRUE
És legyen igaz a teljes tartományra
Ha magyar exceled van, akkor használd a http://hu.excel-translator.de/
képletfordítót (Angolról magyarra, vesszőt pontosvesszőre cserélve)Ide feltöltöttem:
-
azopi74
addikt
Ügyes vagy, de ilyenkor (ha már feltetted a kérdést) illik azt is elárulni, hogy mi volt a probléma oka, és hogy oldottad meg, mert mások is olvassák ezt a topicot, nem csak az önkéntes "válaszolók", így valszleg más is okulna a dologból. Saját tapasztalatból emlékszem, hogy igen frusztráló tud lenni, amikor valaki rágoogle-zik egy problémára, és megtalálja ugyanazt a kérdést, ami foglalkoztatja, de azt találja, hogy " already solved". Aztán persze nincs tovább a thread. Expertek persze jól látják rögtön, mi volt a gáz a képlettel, de nem csak haladók olvassák ezt a topicot..
-
molacika91
tag
Sziasztok!
Szeretnék egy kis segítséget kérni.
Hogyan lehet azt megvalósítani, hogy adott egy oszlop, és abban az oszlopban az utoljára módosult értéket kiemelni valamilyen színnel?
Feltételes formázást nézegetem, de nem találok rá semmit.Köszi!
-
azopi74
addikt
válasz
TrollBalint #25940 üzenetére
Fel tudsz tölteni egy olyan példát, ahol nem terjeszti ki? Ki kéne neki terjesztenie automatikusan . Igazság szerint el sem tudom képzelni, hogy mi lehet a gond, még találkoztam ilyennel. CSak különböző trükközésekkel lehet megoldani, ha azt akarod, hogy ne terjessze ki.
Nem csináltál véletlenül az aljára egy összesítő sort? Mert akkor az alatt már nem terjeszti tovább. -
azopi74
addikt
válasz
TrollBalint #25939 üzenetére
"Közben felvetődött egy kérdés benne, mi a különbség, ha úgy hivatkozok egy cellára, hogy : Table1[[#ThisRow];[Column6]] vagy pedig simán [Column6]?"
Szia, itt viszonylag jól el vannak magyarázva a strukturált hivatkozások:
Egyébként [#This Row] ugyanaz, mint az @ .
"aztán majd csak kitalálnak valamit, hogy mit változtassak meg "
Ja, így szokott ez lenni
-
TrollBalint
addikt
válasz
TrollBalint #25939 üzenetére
Hogy tudom azt megcsinálni, hogy mikor csinálok egy ilyen Named Table-t, akkor , ha új sort írok alá, automatikusan terjessze ki a táblázatot is rá? Mint ahogy nálad is működik. Amit én csináltam, ott nem terjeszti ki.
-
TrollBalint
addikt
válasz
azopi74 #25902 üzenetére
nagyon szépen köszi, főleg a magyarázatokat. Kicsit átalakítottam a saját táblázatomat, hogy ezt a megoldást tudjam használni, de úgy érzem hasznára vált
Közben felvetődött egy kérdés benne, mi a különbség, ha úgy hivatkozok egy cellára, hogy : Table1[[#ThisRow];[Column6]] vagy pedig simán [Column6]?
(egyelőre nem néztem meg, hogy mennyire számol jól, ahogy értelmeztem, nekem tökéletesnek tűnik (egyelőreaztán majd csak kitalálnak valamit, hogy mit változtassak meg
)
-
azopi74
addikt
válasz
bara17 #25919 üzenetére
Egyébként nem akarok beleszólni, de ha a makród nem .csv-ből "másolná" a dolgokat, hanem szabályosan importálná , akkor ezt az egész fejtörést megspórolhatnád magadnak, mivel akkor nem lenne szükség text to columsra sem.
Megadhatnád neki rögtön a delimitereket (elválasztókat), ezres elválasztót, tizedes elválasztót, oszloponkánt beállíthatod az adattípust, stb.
Valahogy így
With ActiveSheet.QueryTables.Add(Connection:="TEXT;eleresi ut.csv" _
, Destination:=Range("$A$1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = ","
.TextFileThousandsSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With -
-
Delila_1
veterán
válasz
Attila7298 #25929 üzenetére
Szívesen.
-
Delila_1
veterán
válasz
Attila7298 #25923 üzenetére
Az aljáról haladj felfelé.
For sor= 40 to 1 Step-1
-
Attila7298
újonc
Sziasztok! Bocs de megint kellene egy kis segítség.
A "B" oszlopon kellene üres helyet keresni és az egész sort törölni.
Az a baj ha egymás után van két üres hely akkor az elsőt ki törli de a következő üres sort átugorja.Sub Sortorles()
sor = 1
For sor = 1 To 40
Cells(sor, 2).Select
If Selection.Value = "" Then
Selection.EntireRow.DeleteEnd If
Next
End SubKöszönöm a türelmeteket.
-
bara17
tag
válasz
Delila_1 #25920 üzenetére
Köszi szépen, valóban ez a megoldás
Amúgy találtam egy másikat is, ami végül szintén célra vezetett
ActiveWorkbook.ActiveSheet.Columns("A:A").TextToColumns Destination:=ActiveWorkbook.ActiveSheet.Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _
Space:=False, Other:=False -
bara17
tag
Sziasztok!
Az alábbi próblémával szembesültem:
Van egy makróm, amivel csv fájlokat másolok át másik excelbe (.xls formátum) majd onnan még feldolgozom. Azonban, ha makróval behívom ugyebár a csv fájlt akkor egy cellába tömörít mindent így persze a további feldolgozás hibás lesz. A dolog kijavítása remekül működik az Adatok/szövegből oszlop funkcíóval, de hiába rögzítem a műveletet makróval és írom be a változót az első sor kivételével nem jó. Kérdésem mi lehet a hiba? Rögzített makró (Z= adatot tartalmazó sorok száma):
For i = 1 To Z
Selection.TextToColumns Destination:=Cells(i, 1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
)), TrailingMinusNumbers:=True
NextA makró lefut az első sor rendeződik, a többi sorba azonban a rendeződés utáni A1 cella értéke kerül bele. (lásd. képek). Mi lehet a gond? (lehet, hogy nagyon apró a bibi, de sajna nem vagyok programozó)
http://prohardver.hu/dl/upc/2015-03/11/358977_kknflyzrmatxbw8h_before_2.jpg
http://prohardver.hu/dl/upc/2015-03/11/358977_epzkcszqwtatlbu7_after.jpg
Kösziui: Természetesen ez csak egy minta
-
azopi74
addikt
válasz
cellpeti #25896 üzenetére
De pontosan milyen feliratra gondolsz?
A Title-re? (Azt hiszem, magyarban Cím)
Ha igen, akkor a megoldás:
Function GetTitleText(SheetName, ChartName As String)
'Visszaadja az adott munkalap adott nevű diagramjának címének szövegét
GetTitleText = Sheets(SheetName).ChartObjects(ChartName).Chart.ChartTitle.Text
End FunctionAztán ezt a függvényt olyan sheeten hívod meg, ahol akarod.
(Ha más feliratra gondoltál, akkor értelemszerűen azt az objektumot tedd be az UDF-be, amit akarsz)
-
Fferi50
Topikgazda
válasz
Fferi50 #25908 üzenetére
Kiegészítés:
Igaz, akkor az esetleges hibás értékek nem fogják kiakasztani. De előtte megnézheted, hogy van-e benne hibás érték egy
Set vanhiba=Activesheet.UsedRange.Find(what:="#",lookin:=xlvalues,lookat:=xlpart)
if not vanhiba is nothing then
msgbox "Hibát találtam a " & vanhiba.address & " cellában",vbinformation
exit sub
endifprogramrészlettel.
Üdv.
-
Agostino
addikt
sziasztok
újabb nem értés : )
Sub sortörés()
For Each MyRange In ActiveSheet.UsedRange
If 0 < InStr(MyRange, Chr(10)) Then
MyRange = Replace(MyRange, Chr(10), "")
End If
Next
End Suberre is type mismatch-et dob, de még debuggolni sem tudom, mert a ? cella.adress-re run time error 424 object required hibaüzenet jön....
egyébként ezzel a sorral van baja
If 0 < InStr(MyRange, Chr(10)) Then
... és csak akkor ha csv xls-be van kimentve, ami viszont most fontos
-
azopi74
addikt
válasz
azopi74 #25901 üzenetére
Na már találtam is két hibát
1. StartDayNormalStart nem kell, helyette viszont kell StartDayNormalEnd
=DATE(YEAR([@StartTime]),MONTH([@StartTime]),DAY([@StartTime]))+MunkaidőZárás
Ugyanis ez kell a PartDayFirstDay korrekt kiszámításához:
=IF([@IfStartInWorkingTime],[@StartDayNormalEnd]-[@StartTime],0)
2. Ha ugyanaz a kezdő és záródátum, és mindkettő ideje munkaidőn belül van, nem jól kalkulál, mert záróként és nyitóként is bekalkálja a törtnapokat, ezért szükség van erre a boolean változóra:
WithinOneDay: (ha egy munkanapon belül van a starttime és endtime)
=COUNTIFS(DayType[StartWorkingTime],"<="&[StartTime],DayType[EndWorkingTime],">="&[@EndTime],DayType[Type],"Workday")
És ennek megfelelően TotalWorkingTimeCorr (ez a végső megoldás)
:
=IF([@WithinOneDay],[@EndTime]-[@StartTime],[@TotalWorkingTime])
Javítottam, itt elérhető: [link]
Remélem, más logikai bukfenc nincs
-
azopi74
addikt
válasz
TrollBalint #25874 üzenetére
Hali, na megcsináltam
Algoritmusom a következő:
1: Jelöljük ki állandóba a normál munkaidőkezdetet és munkaidővéget (B1 és B2 cella) Jelen esetben 9:00 és 17:00, MunkaidőKezdet és MunkaidőZárás
2: HAtározzuk meg minden napra a normál munkaidőkezdetet és normál munkaidővéget. Ehhez kibővítettem a munkanapos táblát StartWorkingTime és EndWokringTime mezőkkel.
=[@Day]+MunkaidőKezdet
=[@Day]+MunkaidőZárás3: Határozzuk meg a normál időkezdeteket (StartDayNormalStart és EndDayNormalStart), képleteik:
=DATE(YEAR([@StartTime]),MONTH([@StartTime]),DAY([@StartTime]))+MunkaidőKezdet
és
=DATE(YEAR([@EndTime]),MONTH([@EndTime]),DAY([@EndTime]))+MunkaidőKezdet
4: Számoljuk össze a teljes munkanapok számát (FullWorkingTime) StartDay és EndDay között. :
=COUNTIFS(DayType[StartWorkingTime],">="&[StartTime],DayType[EndWorkingTime],"<="&[@EndTime],DayType[Type],"Workday")
Vagyis azoknak a munkanapoknak a száma, amik a StartTime (kezdőidő) után kezdődtek, a záróidő (EndTime) előtt záródtak
5. Számoljuk ki a töredék napokat. Ehhez döntsük el, hogy a kezdőidő vagy a záróidő munkaidőbe esek-e? (csak ekkor kell vele fognalkozni):
IfStartInWorkingTime:
=COUNTIFS(DayType[StartWorkingTime],"<"&[@StartTime],DayType[EndWorkingTime],">"&[@StartTime],DayType[Type],"Workday")
Ennek értéke 1 vagy 0 lehet, (TRUE vagy FALSE), ha 1, akkor a kezdőidő munkaidőőben van ,különben nem,
IfEndInWorkingTime:
Hasonló logikával:
=COUNTIFS(DayType[EndWorkingTime],">"&[@EndTime],DayType[StartWorkingTime],"<"&[@EndTime],DayType[Type],"Workday")
Ezután számoljuk ki a töredéknapokat:
Első nap töredéknapja (PartDayFirstDay):
=IF([@IfStartInWorkingTime],[@StartTime]-[@StartDayNormalStart],0)
Utolsó nap töredéknapja (PartDayLastDay):
=IF([@IfEndInWorkingTime],[@EndTime]-[@EndDayNormalStart],0)
6. Adjuk össze a teljes és töredéknapokat, hogy megkapjuk az összes munkaidőt:
TotalWorkingTime:
=[@FullWorkingTime]+[@PartDayFirstDay]+[@PartDayLastDay]
A táblát itt találod.
Ha valami nem OK, írj, javítom a képletet (letesztelni már nem volt időm
Új hozzászólás Aktív témák
Hirdetés
- Honor 9X Lite 128GB, Kártyafüggetlen, 1 Év Garanciával
- Realme C30 32GB, Kártyafüggetlen 1Év Garanciával
- AKCIÓ! Gigabyte H610M i5 13600K 16GB DDR4 512GB SSD RTX 3060Ti 8GB Zalman S2 TG Seasonic 650W
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Xiaomi Redmi A3 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest