Hirdetés

2024. május 3., péntek

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

(#21501) zsambek


zsambek
aktív tag

Sziasztok,

Az a kérdésem lenne, hogy:

http://www.oktatas.hu/pub_bin/dload/kozoktatas/erettsegi/feladatok2010tavasz/e_info_10maj_fl.pdf

ebben az érettségiben úgy szeretném megcsinálni, a Jelszóbetűs részt, hogy oldalra felvettem egy segédtáblát, amibe beletöltöttem az angol ábécé betűit, és onnan szeretném indexeléssel kiválasztani a betűt.
Viszont a problémám az, hogy néha #ÉRTÉK-et ír, viszont nem tudom miért. :(

INDEX($M$2:$M$27;KEREK.LE(26*VÉL();0);0)

Ezt használom. Az M2 : M27-ben van az angol ábécés tábla.

Köszi a segítséget,
zsambek`

(#21502) bteebi válasza Delila_1 (#21498) üzenetére


bteebi
veterán

(Most már) nálam is :). Elsőre lefut hiba nélkül, de ha utána újra lefuttatom, akkor előjön ez a hiba. Második futás után - nem tudom miért - azt csinálja, hogy már eleve szétbontja oszlopokra a szöveget. Ezek szerint nem csak minden indítás után végzi el a tagolást, ami számomra meglepő. Ráadásul a munkafüzetben bárhová másolom az adatokat, akkor is szétbontja oszlopokra. Valószínűleg emiatt van a hibaüzenet is, bár nem világos, hogy miért.

#21500: Köszönöm neked is! Ismertem amúgy ezt a funkciót, bár még talán csak egyszer-kétszer használtam korábban.

Cancel all my meetings. Someone is wrong on the Internet.

(#21503) Delila_1 válasza bteebi (#21502) üzenetére


Delila_1
Topikgazda

Ellenőrizd, hogy az A1 cellában van-e szóköz. Ha van, akkor fusson a szövegből oszlopok részre, egyébként lépjen túl ezen a részen.

If InStr(Cells(1), " ") > 0 Then
MsgBox "van szóköz"
Else
MsgBox "nincs szóköz"
End If

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

(#21504) Delila_1 válasza zsambek (#21501) üzenetére


Delila_1
Topikgazda

A jelszó első karaktere a jelentkező vezetéknevének első karaktere, második karaktere pedig utónevének első karaktere.

Vegyük, hogy a név az A2 cellában van. A Vkezdő képlete =BAL(A2;1),
az Ukezdőé =KÖZÉP(A2;SZÖVEG.KERES(" ";A2)+1;1)

A Hanyadik a HOL.VAN függvénnyel kereshető ki – ne feledkezz meg az esetleges címsorról sem, ha a függvényed az A oszlopban keres, ebben az esetben le kell vonni belőle 1-et.

A többit biztosan kitalálod, azokhoz kellene a txt fájl.

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

(#21505) Snoop-y


Snoop-y
veterán

Sziasztok,

Az alabbiban kernem a segitsegeteket:

Stacked chartot szeretnek csinalni de kicsit bonyolultabban/reszletesebben mint amit alapban lehet vele.

Probaltam megcsinalni de nem nagyon jutok elobbre :)

Azt szeretnem latni eredmenykent amit az E oszlopba belerajzoltam a kis kezemmel.

Vagyis az oszlopnak 60 magasnak kellene lennie es tartalmaznia kellene melyik szinbol mennyi van.
A konnyebb erthetoseg kedveert mindegyikbol ugyanannyit raktam a tablaba ( szinenkent 20 )
Viszont arnyalat szerinti bontasban is szeretnem latni ugyanazon a charton. ( tehat a jobb oldali megoldas nekem nem jo mert az kulon oszlopot csinal )

Nyilvan az adat elrendezes sem jo szoval szivesen varom az otleteket :D

New level... Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need

(#21506) Delila_1 válasza Snoop-y (#21505) üzenetére


Delila_1
Topikgazda

Nézz szét itt!

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

(#21507) Snoop-y válasza Delila_1 (#21506) üzenetére


Snoop-y
veterán

A problema ott kezdodik, hogy az adatokat sem sikerul egy oszlopban megjeleniteni.

New level... Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need

(#21508) Delila_1 válasza Snoop-y (#21507) üzenetére


Delila_1
Topikgazda

Nem túl szerencsés megoldás, biztosan lesz valaki, aki jobbat hoz. Most szaladok, nincs időm próbálkozni.

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

(#21509) bandus


bandus
veterán

olyat tud-e az excel egyszerűen (makróval persze), hogy megkeres egy értéket egy tömbben (1D vagy több), és visszaadja annak a pozícióját?

köszönöm!

"a jövötsajnos nemlehet tudni csakhamárotvagy deakormegmár azajelen"

(#21510) Snoop-y válasza Delila_1 (#21508) üzenetére


Snoop-y
veterán

Koszonom de ez megy nekem is ugy hogy a relevans oszlopok egymas mellett vannak :)

New level... Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need

(#21511) Snoop-y válasza bandus (#21509) üzenetére


Snoop-y
veterán

Ha csak egy oszlopban keresel akkor alabbi jo lehet:

D oszlopban ( elso 100 sorban ) megkeresi az "erteket" es megmondja hanyadikban talalta meg:

=MATCH(2,INDEX(1/(D$1:D$100="ertek"),0))
( az nem smiley hanem : D space nelkul )

[ Szerkesztve ]

New level... Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need

(#21512) bandus


bandus
veterán

még egy dologra nem tudok rájönni. vannak dátumaim éééé.hh.nn óó:pp formátumban, amiket eltárolok változókban. az olyan dátumokat, ahol az óra 00:00 éppen, a változóba csak éééé.hh.nn formátumban teszi bele, elmarad az óra kiírása. ha nem 00:00 hanem 01:00, vagy bármi más, akkor a teljes formátumot elrakja a változóba. van ötletetek, hogy mi lehet a probléma?

"a jövötsajnos nemlehet tudni csakhamárotvagy deakormegmár azajelen"

(#21513) ildikol


ildikol
újonc

Sziasztok, remélem tud valaki segíteni, excel makrot írnék, de elakadtam..

Van egy táblázatom, azt szeretném, ha tetszőleges soron ( a sorban tetszőleges cellán ) állva ugyanannak a sornak a Q oszlopába ugrana a kurzor, és oda betenne egy most függvényt, majd attól függően, hogy a P oszlopban milyen adat van ( legördülő listából választható, 3 féle adat lehet csak ), az egyik adat esetében egy köv munkalapra ugyanebben az xlsben másolja át az egész sort értékbeillesztéssel a következő üres sorba ( folyamatosan tölteném a táblát )

Remélem érthető voltam és tudtok segíteni, köszi előre is!

(#21514) Snoop-y válasza bandus (#21509) üzenetére


Snoop-y
veterán

Ez jobb viszont ez is egy oszlopban keres:

=ADDRESS(MATCH(F3,C:C,0),COLUMN(C1))

F3 ba beirod mit szeretnel keresni es az adott oszlopban pl C megkeresi neked es kiirja igy: $C$13

[ Szerkesztve ]

New level... Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need

(#21515) Delila_1 válasza ildikol (#21513) üzenetére


Delila_1
Topikgazda

Az első makrót a laphoz rendeld. Gondolom, akkor kell másolni a sort, ha egyrészt a P oszlopban egy bizonyos érték van, másrészt ha a sor ki van töltve a P-ig. Az eseménykezelő makró ezeket a feltételeket figyeli.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 16 Then 'P oszlopba írtál
Application.EnableEvents = False
Cells(Target.Row, "Q") = Time 'aktuális idő beírása
Application.EnableEvents = True

If Cells(Target.Row, "P") = "Ezt kell másolni" Then 'ezt a szöveget írd át
Masol Target.Row 'Masol makró meghívása, az aktuális sor értékének átadásával
Else
Application.CutCopyMode = False
End If
End If
End Sub

A második makró, ami a másolást végzi, modulba kerüljön. Azért van szükség 2 makróra, mert a laphoz rendelt csak a saját lapján tud intézkedni, de a változó(ka)t, mint most az aktuális sor számát, át tudja adni a másiknak, ami végrehajtja a másolást.
Nálam a Munka1 lapra írok, a Munka2-re másol a makró. Ezeket írd át a saját lapjaid nevére.

Sub Masol(sor)
Dim usor As Long
usor = Application.CountA(Sheets("Munka2").Columns(1)) + 1
Sheets("Munka1").Rows(sor).Copy Sheets("Munka2").Cells(usor, 1)
Application.CutCopyMode = False
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.

(#21516) Delila_1 válasza bandus (#21512) üzenetére


Delila_1
Topikgazda

Az A1 cellába írtam a dátumot és időt, 2014.05.09 00:00. A format utasítással adhatod meg a kellő formátumot.

Sub ido()
Dim most As Date
most = Cells(1)
MsgBox Format(most, "yyyy.mm.dd hh:mm")
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.

(#21517) alfa20 válasza Snoop-y (#21514) üzenetére


alfa20
senior tag

nem a legelegánsabb megoldás, de majd jön Delila_1 és majd megoldja profin :)

Sub keres()

Dim keres As Variant

keres = InputBox("Keresendő szöveg, szám:", "Keresés")

Cells.Find(What:=keres, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate

MsgBox ActiveCell.Address

End Sub

és meg is jött :D

[ Szerkesztve ]

"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)

(#21518) Delila_1 válasza alfa20 (#21517) üzenetére


Delila_1
Topikgazda

Csak egy apró egyszerűsítés.

Sub keres()
Dim keres As Variant, cim

keres = InputBox("Keresendő szöveg, szám:", "Keresés")

cim= Cells.Find(What:=keres, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Address
MsgBox cim
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.

(#21519) lenkei83


lenkei83
tag

Sziasztok!

Egy nagyon (számomra nem :D ) egyszerű dologra lenne szükségem VBA-ban.

Van 20 munkalapom, 10 x-re végzőik és 10 y-ra.

Szeretném egyszerre kijelölni csak az x végűeket.

Tudna valaki ebben segíteni?

köszi

(#21520) Delila_1 válasza lenkei83 (#21519) üzenetére


Delila_1
Topikgazda

Ha egymás után következnek, állsz az első, és Shiftet nyomva tartva az utolsóra kattintasz.
Ellenkező esetben a Ctrl-t nyomd, közben egyenként kattints a fülekre.

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

(#21521) lenkei83 válasza Delila_1 (#21520) üzenetére


lenkei83
tag

Ez csak egy példa volt, ettől bonyolultabb a dolog. :) A kattintgatós megoldás nekem is megy, valami vba megoldásra gondoltam. :)

(#21522) Delila_1 válasza lenkei83 (#21521) üzenetére


Delila_1
Topikgazda

Próbálkoztam, de nem jön össze. :W

Sub lapok()
Dim lap%, szoveg$

For lap% = 1 To Worksheets.Count
If Right(Sheets(lap%).Name, 1) = "x" Then
szoveg$ = szoveg$ & Sheets(lap%).Name & """" & ","
End If
Next

szoveg$ = Left(szoveg$, Len(szoveg$) - 2)
Sheets(Array(szoveg$)).Select
End Sub

Az utolsó sornál túlcsordulást jelez. Talán kiindulásnak jó.

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

(#21523) lenkei83 válasza Delila_1 (#21522) üzenetére


lenkei83
tag

Megoldottam máshogy...

Minden lapon van fix cellám ami nem változik:

Sub AR_APSELECT()

Dim SheetArray() As Variant
Dim ws As Worksheet
Dim indx As Integer
For Each ws In ThisWorkbook.Sheets
If ws.Range("A6") = "Company" Then
ReDim Preserve SheetArray(indx)
SheetArray(indx) = ws.Index
indx = indx + 1
End If
Next
If indx > 0 Then
Sheets(SheetArray()).Select
End If
End Sub

(#21524) Delila_1 válasza lenkei83 (#21523) üzenetére


Delila_1
Topikgazda

Nagyon jó! :) :C

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

(#21525) sutyimatyi


sutyimatyi
csendes tag

Sziasztok!
Köszönöm az előző segítségeket, kezd alakulni a táblázatom.
Mellékelten feltöltöttem egy képet arról, hogyan néz ki. A kérdésem az, hogyan lehet kiszámolni, hogy mennyi a várható túlóra. A sorok végén van egy összegzés, hogy mennyi a valós, és mennyi a tervezett óra, ami változhat. http://prohardver.hu/muvelet/tag_kep/karbantart.php?id=1158587
Van-e olyan függvény ami kiírja, hogy a valós sorban melyik cella az utolsó ami nem 0, és ha ez megvan akkor ehhez hozzáadja a tervezett sor összegét ettől a cellától. Remélem érthető voltam.
Köszönöm.

[ Szerkesztve ]

(#21526) PistiSan


PistiSan
addikt

Sziasztok!
Excelben van egy importált táblázatom.

A gond ott van, hogy az oszlopokban szereplő adatoknál, van ahol egy szóköz, van ahol 2 is van.

"B" oszlopban kilométeróra állások vannak, itt minden esetben 2db szóköz van az óraállás előtt.
Ezekkel a számadatokkal így nem tudok dolgozni.

Valahogy meg kellene oldanom, hogy minden szóköz eltűnjön az oszlopokból.
Így sikerült is eltüntetni: =JOBB(B1;(HOSSZ(B1)-2))
Viszont ha tovább dolgozom az adatokkal, valamiért hibákat kapok, ha a számított érték helyett rendesen megadom a számot kézzel, akkor minden rendben van!

Van valami ötletetek?

(#21527) Delila_1 válasza PistiSan (#21526) üzenetére


Delila_1
Topikgazda

A TRIM függvény levágja a hivatkozott cella elejéről és végéről a felesleges szóközöket.
=trim(B1)

Az így kapott segédoszlop képleteket tartalmaz, ezért érdemes másolni, majd az eredeti helyére irányítottan, értékként beilleszteni.

Az eredmény szöveg típusú lesz, át kell alakítani számokká, így.

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

(#21528) Delila_1 válasza sutyimatyi (#21525) üzenetére


Delila_1
Topikgazda

Nincs jogosultságom a kép megtekintéséhez, de a lenti kép talán segít.

A B16, C16, és C18 cellák formátuma [ó]:pp.

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

(#21529) lazlogogola


lazlogogola
tag

Sziasztok!

Volna egy gondom. Lehet egyik excellből a másikban található listára hivatkozni?

1. excellben van egy névsor pl. A1-től A300-ig (itt valósznű folyamatosan bővül a névsor)
2.-ik excellben szeretném megjeleníteni egy legördülő listában ezeket a neveket.

Egy excellen belül külön munkalapokon megtudom csinálni,de egy külső excellből nem.

Help!!!

(#21530) gobe22


gobe22
csendes tag

Nagy szükségem lenne egy olyan függvényre, ami egy cellában levő vesszőkkel elválasztott számokat/szavakat növekvő sorba rendez szintén vesszőkkel elválasztva.
Azt hittem alapból létezik ilyen függvény, desehol sem találom.
Előre is köszi a segítséget!

(#21531) pdw_ph válasza lazlogogola (#21529) üzenetére


pdw_ph
tag

1. Eredeti listaban a A1:A300-at elnevezed (bal felso sarokban ahol irja h A1 stb. oda beirod pl. hogy "Lista".
2. Masik fileban a Data Validationnel a sourcet ugy adod meg hogy =File1.xls!Lista

Elvileg mennie kene, de nem probaltam ki.

(#21532) Delila_1 válasza lazlogogola (#21529) üzenetére


Delila_1
Topikgazda

=[InnenMásol.xlsx]InnenMásolLapneve!A1

Figyelj a kiterjesztésre!

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

(#21533) Delila_1 válasza gobe22 (#21530) üzenetére


Delila_1
Topikgazda

Több lépésben lehet megoldani.

1. Kijelölöd a tartományt, a Szövegből oszlopok funkcióval oszlopokra bontod a szöveget, ahol határoló jelnek a vesszőt jelölöd be.
2. Újra kijelölöd a kibővült tartományt, Rendezés. Itt az Egyebek-nél a Balról jobbra funkciót választod.
3. Ezután újra összefűzöd az adatokat egy segédoszlopban, közöttük vesszővel: =A1 & "," & B1 & "," & C1 stb., ahány oszlopra bontotta szét a Szövegből oszlopok.
4. A segédoszlopot másolod, és az eredeti helyére illeszted be irányítottan, értékként.
5. Törlöd a feleslegessé vált oszlopokat, csak az A maradjon 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.

(#21534) lazlogogola válasza pdw_ph (#21531) üzenetére


lazlogogola
tag

ez nem megy

(#21535) lazlogogola válasza Delila_1 (#21532) üzenetére


lazlogogola
tag

Az "innenmásol" helyére a hivatkoztt excell nevét adjam meg?

(#21536) gobe22 válasza Delila_1 (#21533) üzenetére


gobe22
csendes tag

Köszi a segítséget, ezzel egy nagy baj van, hogy nem engedi kijelölni az összes sort, hanem csak egyenként hajlandó sortolni. Erre tudsz vmi megoldást?

(#21537) Delila_1 válasza lazlogogola (#21535) üzenetére


Delila_1
Topikgazda

Igen, a fájl nevét kiterjesztéssel, majd annak a lapnak a nevét, ahonnan másolsz.
A képletet lemásolva a többi sorban megkapod a 300 adatot.

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

(#21538) Delila_1 válasza gobe22 (#21536) üzenetére


Delila_1
Topikgazda

Próbáld újra, nálam nincs egy zokszava, megcsinálja.

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

(#21539) lazlogogola válasza Delila_1 (#21537) üzenetére


lazlogogola
tag

Naon hülye vagyok,ez nem megy.

1. file neve ahonnan másolnám a névsort : 2másolat.xls (itt A1-től A300-ig megadtam a lista nevét "krónikus")

2. file neve ahova tenném : Betegek kr.xls

?

(#21540) gobe22 válasza Delila_1 (#21538) üzenetére


gobe22
csendes tag

Küldök egyet shotot hogy hol nem engedi kiválasztani több sort. Marhára kéne mert atomsok sor van...

(#21541) Delila_1 válasza lazlogogola (#21539) üzenetére


Delila_1
Topikgazda

Nem kell lista.
A betegek kr.xls-be írd be a képletet oda, ahova másolni akarsz.
=[2másolat.xls]krónikus!A1 ha a lap neve, ahonnan másolni akarsz, krónikus.
A képletet lemásolod a 300. sorig.

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

(#21542) Delila_1 válasza gobe22 (#21540) üzenetére


Delila_1
Topikgazda

Hány vesszővel ellátott adatod van soronként? Írok rá egy makrót.

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

(#21543) gobe22 válasza Delila_1 (#21542) üzenetére


gobe22
csendes tag

Hú ezerköszi! 1 és 12 között van az elválasztott elemek száma.

(#21544) lazlogogola válasza Delila_1 (#21541) üzenetére


lazlogogola
tag

Megcsináltam,hivatkozik is.
Felkinálta forrásban a filet,a munkalapot és a végén ezt írta ki: #NÉV?

(#21545) sutyimatyi válasza Delila_1 (#21528) üzenetére


sutyimatyi
csendes tag

[link]

Remélem most meg lehet nézni.

[ Szerkesztve ]

(#21546) Delila_1 válasza gobe22 (#21543) üzenetére


Delila_1
Topikgazda

Kicsit sok volt a buktató.
Kijelölöd a tartományt az A oszlopban, és indítod a makrót.

Sub VizszRend()
Dim usor As Long, sor As Long

Application.DisplayAlerts = False

'Szövegből oszlopok
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, 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)), _
TrailingMinusNumbers:=True

'Rendezés soronként
usor = Application.CountA(Columns(1))
For sor = 1 To usor
Rows(sor).Select
Selection.Sort Key1:=Range("A" & sor), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Next

'Összefűzés az N oszlopban
Range("N1:N" & usor).FormulaR1C1 = _
"=RC[-13]&"",""&RC[-12]&"",""&RC[-11]&"",""&RC[-10]&"",""&RC[-9]&"",""&RC[-8]&"",""&RC[-7]&"",""&RC[-6]&"",""&RC[-5]&"",""&RC[-4]&"",""&RC[-3]&"",""&RC[-2]"

'N oszlop irányított beillesztése az A-ba
Range("N:N").Copy
Range("A1").PasteSpecial xlPasteValues

'Segédoszlopok törlése
Range("B:N").ClearContents

'Többszörös vesszők törlése
sor = 0
Do While sor < 3
Cells.Replace What:=",,", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
sor = sor + 1
Loop

'Utolsó vessző törlése képlettel a H oszlopba
Range("H1:H" & usor).FormulaR1C1 = _
"=IF(RIGHT(RC[-7],1)="","",LEFT(RC[-7],LEN(RC[-7])-1),RC[-7])"

'H oszlop másolása az A-ba
Range("H:H").Copy
Range("A1").PasteSpecial xlPasteValues
Range("H:H").ClearContents 'H oszlop törlése

Application.DisplayAlerts = False
End Su
b

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

(#21547) gobe22 válasza Delila_1 (#21546) üzenetére


gobe22
csendes tag

Lefutattam, de sajnos amint megtalálja az első esetet a 160.dik sor környékén, azt megcsinálja, de a többit már nem csinálja meg, hanem kitörli a mezőket. Van valami korlátozás rajta amit ki lehetne terjeszteni?

(#21548) gobe22 válasza gobe22 (#21547) üzenetére


gobe22
csendes tag

Kiszedtem az üres sorokat, így már tökjól műxik. :DD
Még esetleg ki lehet egészíteni azzal, hogy az üres sorokat hagyja változatlanul?
Ugye akármilyen sok sorból álló adatoknál is műxik, ugye?

(#21549) Delila_1 válasza gobe22 (#21548) üzenetére


Delila_1
Topikgazda

Az üres sorok törlésével kezd, nem szükséges a kijelölés, azonnal futtatható. Feltételezem, hogy a txt fájlból az adatokat az A1-től kezdve másolod be.

Sub VizszRend()
Dim usor As Long, sor As Long

Application.DisplayAlerts = False

'Üres sorok törlése
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

'Szövegből oszlopok
usor = Application.CountA(Columns(1))
Range("A1:A" & usor).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, 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)), _
TrailingMinusNumbers:=True

'Rendezés soronként
For sor = 1 To usor
Rows(sor).Select
Selection.Sort Key1:=Range("A" & sor), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Next

'Összefűzés az N oszlopban
Range("N1:N" & usor).FormulaR1C1 = _
"=RC[-13]&"",""&RC[-12]&"",""&RC[-11]&"",""&RC[-10]&"",""&RC[-9]&"",""&RC[-8]&"",""&RC[-7]&"",""&RC[-6]&"",""&RC[-5]&"",""&RC[-4]&"",""&RC[-3]&"",""&RC[-2]"

'N oszlop irányított beillesztése az A-ba
Range("N:N").Copy
Range("A1").PasteSpecial xlPasteValues

'Segédoszlopok törlése
Range("B:N").ClearContents

'Többszörös vesszők törlése
sor = 0
Do While sor < 3
Cells.Replace What:=",,", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
sor = sor + 1
Loop

'Utolsó vessző törlése képlettel a H oszlopba
Range("H1:H" & usor).FormulaR1C1 = _
"=IF(RIGHT(RC[-7],1)="","",LEFT(RC[-7],LEN(RC[-7])-1),RC[-7])"

'H oszlop másolása az A-ba
Range("H:H").Copy
Range("A1").PasteSpecial xlPasteValues
Range("H:H").ClearContents 'H oszlop törlése

Application.DisplayAlerts = False
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.

(#21550) gobe22 válasza Delila_1 (#21549) üzenetére


gobe22
csendes tag

Igazából kicsit bonyolultabb a történet, mert 2 oszlop van (A és B) ahol A-ban végig van egy többezres lista, a B-ben pedig csak ha van hozzátartozó adatok vesszővel elválasztva. Ezért kérdeztem hogy meg lehet-e oldani hogy az üres sorokat is meghadja, ráadásul a B oszlopba kerülnek a rendezendő elemek.
De óriási segítség amit eddig is küldtél, mert vlookupolással így is meg tudom oldani belőle, csak van így még pár plusz lépés.
De ezer köszi az eddigieket! :D

Útvonal

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