Hirdetés

2024. május 4., szombat

Gyorskeresés

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-11-13 08:31:56

LOGOUT.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.

Összefoglaló kinyitása ▼

Hozzászólások

(#29401) sedyke válasza lenkei83 (#29396) üzenetére


sedyke
tag

Lenne még valami...

Igazából az én táblázatom sokkal hosszabb mindegyik munkafüzeten, csak az egyszerűség és átláthatóság kedvéért nem küldtem el az egészet.
Van még jó pár hasonló csoportom az összesítő részen, és a 2015-ös, 2016-os lapok is sokkal hosszabbak.
Látom makroval oldottad meg a dolgot, így nem igazán tudom, hogy mit kellene tennem, ha beillesztem mindegyik alá a maradékot.

(#29402) Delila_1 válasza bsh (#29380) üzenetére


Delila_1
Topikgazda

1. kérdésedre:

usor=ActiveSheet.UsedRange.Rows.Count

vagy
usor=Sheets(2).UsedRange.Rows.Count

2. a form méretét megadtad? Nem csak a rajta lévő elemek magasságát?

[ 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.

(#29403) bsh válasza Delila_1 (#29402) üzenetére


bsh
őstag

ez nem jó, mert ha pl. képletek vannak a cellákban (de értékek nélkül), akkor azt így is beleveszi az usedrange-be.

így van a form generálva:
Load FrmTáblázat
FrmTáblázat.Frame1.Caption = "blahblahblah"
FrmTáblázat.Frame1.Left = 3
FrmTáblázat.Frame1.Top = 2
FrmTáblázat.Frame1.Width = 1100
FrmTáblázat.Frame1.Height = 20 + 20 * RowHeight
FrmTáblázat.Frame1.ScrollHeight = 7
FrmTáblázat.Height = FrmTáblázat.Frame1.Height + 70
FrmTáblázat.Width = FrmTáblázat.Frame1.Width + 10
For Y = 1 To RefDocs.Count
Call CreateRow(Y)
'itt az adatok kitöltése
Next Y

If Y < 20 Then
FrmTáblázat.Frame1.ScrollBars = fmScrollBarsNone
Else
FrmTáblázat.Frame1.ScrollBars = fmScrollBarsVertical
End If
FrmTáblázat.Show
End Sub

és minden sor minden egyes textboxa pedig így: (combobox tökugyanez, csak ott még a választható értékek feltöltése is benne van, +3 sor)
Private Sub CreateTextBox(ByVal Y As Integer, ByVal Name As String, ByVal L As Long, ByVal W As Long)
Set newTB = FrmTáblázat.Frame1.Controls.Add("Forms.TextBox.1", CStr(Y) & Name, False)
newTB.Width = W
newTB.Height = RowHeight
newTB.Top = (Y - 1) * RowHeight + 6
newTB.Left = L
newTB.SelectionMargin = False
newTB.AutoSize = False
newTB.Font.Name = FntName
newTB.Font.Size = FntSize
newTB.SpecialEffect = fmButtonEffectFlat
newTB.BorderStyle = fmBorderStyleSingle
newTB.Visible = True
Set newTB = Nothing
End Sub

[ Szerkesztve ]

(#29404) Delila_1 válasza bsh (#29403) üzenetére


Delila_1
Topikgazda

Azt a range("a" & rows.count).end(xlup).row formával is.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29405) bsh válasza Delila_1 (#29404) üzenetére


bsh
őstag

nem, azzal azzal megtalálja az utolsó értéket tartalmazó cellát a megadott oszlopban. csak ugye nem tudok egy konkrét oszlopot megadni, mert nem biztos, hogy ténylegesen mindig az az oszlop lesz a "leghosszabb".
de mondjuk az is lehet, hogy pont abban a két oszlopban amivel próbáltam, abban nem volt húszmillió képlet :DDD

(#29406) Delila_1 válasza bsh (#29405) üzenetére


Delila_1
Topikgazda

Miért van annyi képlet? Mire való a táblázattá alakítás?

Mindegyik módszer a 20 mill-t adja eredményül, ha látszik a képletek eredménye, ha nem.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29407) bsh válasza Delila_1 (#29406) üzenetére


bsh
őstag

miért van annyi képlet? ezt kérdezd attól, aki a táblázatot csinálta :O gondolom fogott egy képletet és autofillel lerántotta a végtelenbe és tovább, hogy "biztosamibiztos" :U
de a ctrl+end az működik ezeken a táblázatokon rendesen, az utolsó értéket tartalmazó sorra (és oszlopra) ugrik, képlettől függetlenül. ezt kéne valahogy kihasználnom vba-ból.

a "táblázattá alakítás" az egy teljesen másik projekt, semmi köze nincs a lastrow-os dologhoz, sőt az excelhez sincs egyáltalán semmi köze. és kimaradt egy lényeges sor a kódból, mert figyelmetlenül másoltam be:
For Y = 1 To RefDocs.Count
Call CreateRow(Y)
FrmTáblázat.Frame1.ScrollHeight = FrmTáblázat.Frame1.ScrollHeight + RowHeight
Next Y

és a rowheight az egy konstans.
de a lényeg, hogy szerintem meg van adva a userform mérete is, na.
az event kezelés csak arra kellene (de végülis nem életbevágó), hogy csak azokat az értékeket kelljen visszaírni a megfelelő ojjektumokba, amiket megváltoztat a user (vagy a makró, lehet teszek bele ilyen autocorrect funkciót). nekem annyi elég lenne, hogy ha egy (közös, many-to-one) combobox_change event lenne, ami tudná a változott "cella" nevét (amiből én tudom, hogy azt hová kell majd visszaírni) és mondjuk az adott *box .tag-jét beállítom "changed"-re, onnan már sima ügy.

[ Szerkesztve ]

(#29408) Delila_1 válasza bsh (#29407) üzenetére


Delila_1
Topikgazda

A táblázattá alakítás lehetővé teszi, hogy ne kelljen előre beírni a képleteket egy halom üres sorba. Az újonnan megkezdett sor másolja magának a fölötte lévő sorok képleteit.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29409) bsh válasza Delila_1 (#29408) üzenetére


bsh
őstag

ja bocs, én a "táblázattá alakítást" azt hittem a másik problémára értetted, ami végülis "táblázattá alakít" egy halom comboboxot :DDD
hogy miért olyan a táblázat, azt nekem hiába mondod, nekem csak a benne levő adatokkal kellen valamit kezdeni. :O

(#29410) Bobrooney válasza Bobrooney (#29388) üzenetére


Bobrooney
senior tag

Erre tudna valaki válaszolni? :S

(#29411) Delila_1 válasza bsh (#29407) üzenetére


Delila_1
Topikgazda

usor = ActiveCell.SpecialCells(xlLastCell).Row
MsgBox usor

Jó kínlódást a formodhoz!

[ 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.

(#29412) Delila_1 válasza Bobrooney (#29410) üzenetére


Delila_1
Topikgazda

Tömbfüggvénnyel megcsináltam, de AB-vel nem tudom, soha nem használtam.

{=DARAB(HA((F2:F80)*((E2:E80)<(F2:F80));F2:F80))}

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29413) Bobrooney válasza Delila_1 (#29412) üzenetére


Bobrooney
senior tag

Köszi de sajna muszáj azzal csinálni :( :R

(#29414) Márkó20 válasza Delila_1 (#29394) üzenetére


Márkó20
újonc

Huu szuper köszi :) Csak nrm nagyon értem :D ezt nekem is màsnak kéne magyarázni.Ez a legegyszerűbb megoldás amúgy?

(#29415) lenkei83 válasza Bobrooney (#29413) üzenetére


lenkei83
tag

Szia!

Csatolva találsz egy mintatáblát. Annyival kiegészítettem, hogy beraktam egy kbség oszlopot, amire egyszerűen lehet feltételt megadni.

[adatbázis függvény]

Nagy májer én sem vagyok benne, keresztkérdéseket nem ér feltenni. :D

Üdv.:
P.

(#29416) Bobrooney válasza lenkei83 (#29415) üzenetére


Bobrooney
senior tag

Hali!

Köszönöm, majdnem jó lett de hivatkozni kellett a cellákra, és sima operátoros képlet kellett. :R

(#29417) lenkei83 válasza Bobrooney (#29416) üzenetére


lenkei83
tag

felrakod a megoldást? :)

(#29418) Delila_1 válasza Márkó20 (#29414) üzenetére


Delila_1
Topikgazda

A Summary lap C2 képletét írom le, a többi ugyanarra a kaptafára készült.

Az INDEX függvénnyel keressük ki a megfelelő értéket. Ennek a szintaktikája
=INDEX(tartomány;sor;oszlop)

A tartomány, amiben keresünk, az Outbound lap I:K oszlopa, ahol az I tartalmazza a keresett hetet, a J és K a két hozzá tartozó értéket. Másik lapon lévő tartományra úgy hivatkozunk, hogy megadjuk a lap nevét, majd felkiáltójel után a tartományt.

A sort a HOL.VAN függvénnyel keressük meg.
=HOL.VAN(keresési_érték;hol_keressük;egyezés_típusa)
Az Outbound lapon TOTAL OUTBOUND wk1 módon szerepel a hét, a Summary lapon csak 1-es számmal. Ezért a keresési_érték "TOTAL OUTBOUND wk"&$A2, vagyis a szöveghez hozzáfűzzük a hét számát tartalmazó A2 cella értékét. A hol_keressük az Outbound lap I oszlopa. Az egyezés_típus értéke itt nulla, ennek a jelentését megtalálod a súgóban.

Most már tudjuk, hogy az első hét adatait az Outbound lap 17. sorában találjuk. Már csak az oszlopot kell megadni az értékek kikereséséhez.
A Summary lap C oszlopába a tartományunk (I:K) 2. oszlopának az adata kell, a D-be pedig a 3. oszlopé.

Az egészet egy HAHIBA függvénybe ágyaztam be, másképp azokban a sorokban, ahol nem talál az INDEX megfelelő értéket – nincs még megadva a heti érték az Outbound lapon –, #HIÁNYZIK hibaérték jelenne meg, és ez csúnya.
=HAHIBA(érték;hiba_esetén). Itt az érték az INDEX függvény eredménye, hiba esetén nulla értéket ír be, mert azt adtuk meg.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29419) m.zmrzlina


m.zmrzlina
senior tag

Tartományt szeretnék definiálni objektumváltozóként.

Ez működik:
Set ws_Csatorna = wb_SPSS_scb.Worksheets("csatorna")
Set rng_Csatkimarad = ws_Csatorna.Range("A1:A101")

Ez nem:
rng_Akioszt = ws_Kabelo.Range(str_Akioszt & "2:" & str_Akioszt & int_usor)
rng_Dkioszt = ws_Kabelo.Range(str_Dkioszt & "2:" & str_Dkioszt & int_usor)

Ez szintén működik:
rng_Akioszt = ws_Kabelo.Range(str_Akioszt & "2:" & str_Akioszt & int_usor).Select
rng_Dkioszt = ws_Kabelo.Range(str_Dkioszt & "2:" & str_Dkioszt & int_usor).Select

Mi lehet a baj?

[ Szerkesztve ]

(#29420) m.zmrzlina válasza m.zmrzlina (#29419) üzenetére


m.zmrzlina
senior tag

:Y

A kérdés tárgytalan. Probléma megoldva. Főleg, hogy a kérdésben benne van a válasz is.

(#29421) Belnir válasza bsh (#29339) üzenetére


Belnir
csendes tag

Ez a megoldás maradt végül, kiválóan működik, összeépítettem azzal a kódsorral is, ami a változásokat is jegyzi. Ez egy txt-t hoz létre. Hogyan tudok xls-t létrehozatni vele? mit kell átírjak?

Intel G4560, AsRock B150M-HDS, 8Gb RAM

(#29422) sedyke


sedyke
tag

Sziasztok!

Tudnátok segíteni, a tegnapi képletem egy másik verziójában?

A422:050: HORSEHAIR LARGE BLACK BRUSH (A422) Style: COL: VARIOUS / SZACC: 05.0 /
F245GW11:065: TASSEL LOAFER (F245GW11) Style: COL: BLACK CALF / SZMUK: 06.5 /

Ilyen cellatartalmakból szeretném kinyerni a colourt, ami az első esetében various, a másodiknál black calf. Tehát a COL: utáni rész egészen a / jelig.

Köszönöm!!!

(#29423) lenkei83 válasza sedyke (#29422) üzenetére


lenkei83
tag

Ha A1-ben van a szöveged akkor B1-be ezt másold be:
=BAL(JOBB(A1;HOSSZ(A1)-(SZÖVEG.KERES("L: ";A1)+2));SZÖVEG.KERES(" / ";A1)-1-(SZÖVEG.KERES("L: ";A1)+2))

(#29424) m.zmrzlina válasza sedyke (#29422) üzenetére


m.zmrzlina
senior tag

=KÖZÉP(A3;SZÖVEG.TALÁL("COL:";A3)+5;SZÖVEG.TALÁL(" /";A3;SZÖVEG.TALÁL("COL:";A3)+5)-(SZÖVEG.TALÁL("COL:";A3)+5))

Mindaddig működik amíg a színt COL:<szóköz> előzi meg és <szóköz>/ követi.

[ Szerkesztve ]

(#29425) bsh válasza Belnir (#29421) üzenetére


bsh
őstag

azért az jelentősen más, nem csak amolyan "átírjuk oszt' jóvan" :)
itt egy ilyen faék megoldás. az egyszerűség kedvéért a log fájlt először külön hozd létre (egy üres excel fájl) és a megfelelő elérési utat írd bele.
Private Sub Workbook_Open()
Call WriteToLog(Application.UserName, "Megnyitás")
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Call WriteToLog(Application.UserName, "Bezárás")
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Call WriteToLog(Application.UserName, Sh.Name & " változtatás")
End Sub
Private Sub WriteToLog(ByVal Who As String, ByVal What As String)
Dim NewXL As New Excel.Application
NewXL.Visible = False
Dim Log As New Excel.Workbook
Set Log = NewXL.Workbooks.Open("Z:\logfájl\elérési\útja\log.xlsx") 'A fájlt először kézzel hozd létre!
Dim LastRow As Long
LastRow = Log.ActiveSheet.Cells(Log.ActiveSheet.Rows.Count, 1).End(xlUp).Row
Log.ActiveSheet.Cells(LastRow + 1, 1) = Format(Now, "YYYY.MM.DD hh:mm:ss")
Log.ActiveSheet.Cells(LastRow + 1, 2) = Who
Log.ActiveSheet.Cells(LastRow + 1, 3) = What
Log.Save
Log.Close
Set Log = Nothing
Set NewXL = Nothing
End Sub

(#29426) m.zmrzlina


m.zmrzlina
senior tag

For Each rng_Tempcell In rng_Dkioszt
If rng_Tempcell.Value = int_Csomag Then
If rng_Tempcell.Value <> "" And rng_Akioszt.Cells(rng_Tempcell.Row, 1).Value = "" Then
If Application.WorksheetFunction.CountIf(rng_Csatkimarad, ws_Kabelo.Cells(rng_Tempcell.Row, 1).Value) = 0 Then '
str_kodsor_csatlist = str_kodsor_csatlist & Trim(ws_Kabelo.Cells(rng_Tempcell.Row, 1).Value) & " + "
End If
End If
End If
Next

A fenti programrészlettől a következőket várnám:

-menjen végig az rng_Dkioszt nevű tartomány összes celláján
-ha az rng_Akioszt tartományban a vizsgált cellával azonos sorban különbözőséget talál akkor történjen valami

A probléma, hogy a

If rng_Tempcell.Value <> "" And rng_Akioszt.Cells(rng_Tempcell.Row, 1).Value = "" Then

feltételnél amikor a rng_Tempcell.Value még csak az x-dik sor értékét tartalmazza akkor a rng_Tempcell.Row már az X+1-dik sor számát tartalmazza. Másképpen ha a rng_Tempcell.Value=1 a rng_Tempcell.Row=4. Vagyis nem annak az elemnek az értékét adja vissza amit vizsgál hanem az egyel korábbit.

Mitől lehet ez?

[ Szerkesztve ]

(#29427) Delila_1 válasza m.zmrzlina (#29426) üzenetére


Delila_1
Topikgazda

Nálad elég sok változó van, amiknek az eredete nem látható az ábrán.

A lenti makró üzenetet küld, ha a Dkioszt aktuális cellája nem üres, és nem azonos a tőle 2 oszloppal balra lévő tartomány azonos sorával.

Sub mm()
Dim rng_Dkioszt As Range, CV As Range
Set rng_Dkioszt = Range("E2:E15")

For Each CV In rng_Dkioszt
If CV.Value > "" And CV.Value <> Range(CV.Address).Offset(, -2) Then
MsgBox "Eltérés a(z) " & CV.Row & ".sorban"
End If
Next
End Sub

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29428) Fferi50 válasza m.zmrzlina (#29426) üzenetére


Fferi50
őstag

Szia!

A probléma igazából nem probléma (vs: az excelnek mindig igaza van :) ), szerintem abból adódik, hogy az rng_Tempcell.Row a cellának a munkalapon elfoglalt helyét adja vissza és nem az rng_Dkioszt tartományban elfoglalt helyét -> a két szám csak akkor ugyanaz, ha az rng_Dkioszt tartomány az első sortól kezdődik. Egyébként le kell vonni belőle a tartomány induló sorának számát.

Ezen kívül van egy ilyen sorod:
If rng_Tempcell.Value = int_Csomag Then
Ami után jön a következő:
If rng_Tempcell.Value <> "" And rng_Akioszt.Cells(rng_Tempcell.Row, 1).Value = "" Then

Szerintem itt az első feltétel felesleges, hiszen az előző vizsgálatban már megállapítottad, hogy nem üres az rng_Tempcell.

Üdv.

[ Szerkesztve ]

(#29429) m.zmrzlina válasza Delila_1 (#29427) üzenetére


m.zmrzlina
senior tag

Közben rájöttem (és megint tanultam valamit) hogy a rng_Dkioszt és rng_Akioszt objektumváltozó deklarálásával volt gond. Én azt gondoltam (helytelenül) ha én pl deklarálom - hogy a példáddal éljek -
Set rng_Dkioszt = Range("E2:E15")
tartományt akkor ott pl az E2 cellának a .Row tulajdonsága 1 lesz hiszen abban a tartományban az az 1. sor. Na hát ez nagyon nem így van. :(

Köszi a választ!

(#29430) m.zmrzlina válasza Fferi50 (#29428) üzenetére


m.zmrzlina
senior tag

Igen igen. :) Lásd az előző hsz-t!

Az If rng_Tempcell.Value = int_Csomag Then egy másik feltételt vizsgál szóval az kell bele. A minta csak egy kiragadott részlet egy hosszabb makróból.

Köszi neked is!

[ Szerkesztve ]

(#29431) Delila_1 válasza m.zmrzlina (#29429) üzenetére


Delila_1
Topikgazda

Nincs mit. :)

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29432) Márkó20 válasza Delila_1 (#29418) üzenetére


Márkó20
újonc

Hú köszönöm Delila, így már érthető.Nagyon jó vagy!

(#29433) Delila_1 válasza Márkó20 (#29432) üzenetére


Delila_1
Topikgazda

Szívesen. :)

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29434) Vladek83


Vladek83
tag

Sziasztok!

Nyomtatási címek-nél "csak" a felső ismétlődő sorokat lehet megadni, alsót nem? Előre is elnézést a buta kérdésért... :U

üdv,

(#29435) Belnir válasza bsh (#29425) üzenetére


Belnir
csendes tag

Szuperség, köszönöm! :R :R

Már csak egy kérdés:
Hol tanulhatom ki ezt a VBA programozást?

[ Szerkesztve ]

Intel G4560, AsRock B150M-HDS, 8Gb RAM

(#29436) Chrisluke


Chrisluke
csendes tag

Sziasztok, Excelbe szeretnék fotót beszúrni és azt szeretném ha a szöveg ami a képhez tartozik az a fotó előtt helyezkedne el. Word-ben ez megoldható Excelben azonban nem találom sehol vagy csak nem látom. Előre is köszi.

(#29437) Belnir válasza Chrisluke (#29436) üzenetére


Belnir
csendes tag

Előtte, fölött, mindegy hova teszed, az excelben szabadon tologathatod jobbra-balra a képet.
Valahogy így szeretnéd?

[ Szerkesztve ]

Intel G4560, AsRock B150M-HDS, 8Gb RAM

(#29438) hengelhof válasza Belnir (#29437) üzenetére


hengelhof
senior tag

őőőő... nem úgy érti, hogy a cellában lévő szöveg a fotó előtt (a fotón) legyen, és ne takarja ki azt?

(#29439) m.zmrzlina


m.zmrzlina
senior tag

Set rng_Akioszt = ws_Kabelo.range(str_Akioszt & "1:" & str_Akioszt & int_usor)

int_Maxcsom = Application.WorksheetFunction.Large((rng_Akioszt), 1)
int_Mincsom = Application.WorksheetFunction.Small((rng_Akioszt), 1)

A fenti értékadást esetenként valami kiakasztja és az int_Maxcsom = stb...stb... sornál Runtime error '13': Type mismatch hibával megáll. A str_Akioszt egy sztring változó és a hiba jelentkezésekor az értéke: "k"

Most vettem csak észre, hogy a ws_Kabelo.range- ben kisbetűs a Range, mintha az excel nem értné, hogy mit akarok. :F

[ Szerkesztve ]

(#29440) Fferi50 válasza m.zmrzlina (#29439) üzenetére


Fferi50
őstag

Szia!

Az "Application.WorksheetFunction.Large((rng_Akioszt), 1)" eredménye hiba akkor, ha nem tudja az adott tartományon végrehajtani a műveletet. Mivel az int_Maxcsom tipusa integer, a hiba értékét nem kapja meg, ezért fut hibára.
Oka: lehetséges, hogy az rng_Akioszt tartomány nem kapott értéket, azaz Nothing az értéke,vagy nincsenek benne adatok. Tehát azt meg kellene nézni, mielőtt a műveleteket elindítod. Vagy
Másik megoldás, hogy a Maxcsom, Mincsom változódat Variant -nak deklarálod és a művelet után megnézed, hogy hiba-e az értéke.

Üdv.

(#29441) m.zmrzlina válasza Fferi50 (#29440) üzenetére


m.zmrzlina
senior tag

Köszi a választ. Az az érzésem, hogy hosszas hibakeresésnek nézek elébe.

Először a int_Mincsom, int_Maxcsom változó tipusát állítottam Variantra de nem jutottam közelebb. A leálláskor is szám (1 és 9 ami reális) volt az értéke nem pedig hiba.

Aztán egyszer csak elkezdett működni úgy hogy semmit nem módosítottam a kódon és most is lefut akárhányszor indítom.

:F :F :F

Az rng_Akioszt -szerintem- létrejön. Locals ablakban látom, sőt a FormulaR1C1 tulajdonságnál látom az elemek értékeit is. Ha erre gondolsz.

Még egy adalék:
Az rng_Akioszt(1,1) értéke szöveg az összes többi szám. Ha ezt a cellát kizárom a tartományból akkor úgy tűnik lefut a makró hiba nélkül ami logikus is. Csak akkor miért működik n+1-szer úgy is, hogy nincs kizárva a szöveges cella?

[ Szerkesztve ]

(#29442) Fferi50 válasza m.zmrzlina (#29441) üzenetére


Fferi50
őstag

Szia!
"Csak akkor miért működik n+1-szer úgy is, hogy nincs kizárva a szöveges cella?" Ezt a kérdést szerintem itt nem fogjuk tudni megválaszolni. Én max arra tudok gondolni, hogy maga a keresési tartomány esetleg valamilyen ok miatt egy cellából áll és abban nem szám van.

"Először a int_Mincsom, int_Maxcsom változó tipusát állítottam Variantra de nem jutottam közelebb. A leálláskor is szám (1 és 9 ami reális) volt az értéke nem pedig hiba."
Csak az a kérdés, hogy a leállás melyik sorban volt, esetleg az előző értékeket láttad még az adott változókban. Nyilván ezt mostmár nehezen fogod tudni ismételten produkálni....

Üdv.

(#29443) Polllen


Polllen
nagyúr

Sziasztok!

Kellene egy kis segítség.

Van egy ~16.000 soros táblázat, amiből ki kellene törölnöm azokat a sorokat, ahol a 4. oszlopban "#N/A" szerepel. A cellák tartalma különböző.

Kipróbáltam ezt, de borzasztóan lassú:
Range("A1").Select
Selection.End(xlDown).Select
lRow = ActiveCell.Row
Do While lRow >= 1
If Cells(lRow, 4).Text = "#N/A" Then Rows(lRow).EntireRow.Delete
lRow = lRow - 1
Loop

Nem tudtok valami gyorsabb módszert?

B tervnek az jutott eszembe, miközben ezt leírtam, hogy úgy rendezem a táblázatot, hogy az összes "#N/A" sor kerüljön előre, ezután kap egy filter-t és úgy kitörlöm az eredményt.

Mit gondoltok?

"Odamentem egy párhoz...négyen voltak!"

(#29444) lenkei83 válasza Polllen (#29443) üzenetére


lenkei83
tag

Ha sorbarendezed már filter sem kell, jó az ötlet.
Irányított kijelölést próbáltad? Csak hibák kijelölése, utána sorok törlése. Ami még gyorsíthat, ha az automatikus számolást átállítod manuálisra amíg törölsz.

(#29445) teve27


teve27
csendes tag

Sziasztok!

Szakértői segítségeteket szeretném kérni az alábbi ügyben:

B oszlopban az szerepel, hogy milyen rendszámú teherautó vett fel árut a C oszlopban szereplő vevő megbízásából. Amit én szeretnék, az megtudni, hogy adott vevőhöz hány darab autó rakodott. Jelen példában a Zsigulihoz két teherautó (AAA-111 és BBB-222) rakodott.

Addig már próbálkozásaim során eljutottam, hogy meg tudom az excellel számoltatni, hogy hány rendszám van az adott oszlopban, de nem sikerült sehogy sem megoldanom, hogy csak az adott vevőhöz tartozó teherautókat számolja meg.

Nagyon köszönöm a segítséget!

(#29446) Bobrooney válasza teve27 (#29445) üzenetére


Bobrooney
senior tag

Na itt mondjuk jó lehet az AB függvény :))

A képlet másolható, így a többi oszlopra csak másoltam a képletet :)

[ Szerkesztve ]

(#29447) teve27 válasza Bobrooney (#29446) üzenetére


teve27
csendes tag

Köszönöm a gyors választ! Sajnos annyi gond van vele, hogy a Zsiguli vevőhöz kettő darab autó jött csak. Lehet, hogy rosszul vázoltam a gondom, ha egy rendszám többször fordul elő, akkor csak egyszer kellene venni.

(#29448) Bobrooney válasza teve27 (#29447) üzenetére


Bobrooney
senior tag

Jah igen elnéztem a dolgot. Esetleg kimutatással?

[ Szerkesztve ]

(#29449) csferke


csferke
senior tag

Sziasztok!
Egy Custom formázás kellene Excel 2007-ben. Azt szeretném, hogy a cellába írt betű, kicsi/nagy mindig nagybetűként jelenjen meg (I/N, Y/N, D/N ...).

köszi

[ Szerkesztve ]

(#29450) Polllen válasza csferke (#29449) üzenetére


Polllen
nagyúr

Szia!

Úgy tudom, h excel-ben nincs ilyen cellaformázás, csak az UPPER függvénnyel lehet megoldani.

Vagyis maximum egy macro-t tudsz írni, ami kicserél mindent nagyra.

"Odamentem egy párhoz...négyen voltak!"

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.