Hozzászólások
-
SzerzőBejegyzés
-
Sziasztok
Bocsi, kicsit eltüntem, más irányba szólított a kötelesség.
Ennek megfelelően a tömbképletekkel sem foglalkoztam.Ma ültem neki megint.
Szeretnék tanulni, tehát a legoptimálisabb megoldások megértése lenne a cél.
De velahoyg ezek az oszlopra vonatkozó dolgok nem akarnak összeállni a fejemben. Illetve nem vágom hogy az active cellák hogy működnek ilyen esetben.
De ezt majd később.Most kipróbáltam ezzel a segédoszlopos megoldással. Sajnos ez azt az eredményt hozza, hogy ahol nincs a cellában semmi, azt 0 ként jeleníti meg.ez egy elég zavaró dolog. Próbáltam , hogy ha 0 az értéke akkor törölje, de nem tudom összerakni.
Illetve elő jött még egy variáció.
Az eredeti listában előfordulhat olyan, hogy a számok az alábbiak alapján vannak megadva
241875,819,240434
Ebben azt látni, hogy nincs kötőjel a középső számsornál, pedig kellene lennie…Arra gondoltam, hogy amikor lemegy a text to column (azért maradok ennél, mert nekem 365 van, de más gépeken, ahol ezt használni fogják sok esetben régebbi verzió él), akkor megvizsgálnám, hogy hány karakterből állnak a cella értékei. Ha 3 akkor kell elé egy kötőjel.
És itt megint elakadtam.Szóval van bajom…:-)
Köszönöm
Ez így működik
csak az a problémám, hogy folyamatosan új oszlopokat nyitok.
Nincs arra valami megoldás, hogy a p oszlopban, ha talál kötőjelet azt cserélje le az o első 3 karakterére?
Azért az egyszerűbb , mint oszlopot nyitni, eltüntetni.. stb
Bár lehet tévedek… okoskodom, de megcsinálni nem tudom :-)))A formula-ra vonatkozó kérdés:
mit jelent ez pontosan?
mi a különbség formulaR1C1 és formula2R1C1 között?függvényben, RC pozicióval lehet megadni valahogy aktív cellát?
szia
köszönöm!
A textsplit működik.
Abban viszont kérnék segítséget, hogy a formula az mit takar pontosan? vagy a formula?Az uccsó bejegyzést is makróban kell megírnom. Soronként okés , azzal nincs bajom.
De tömbösítve?
Egy kicsit magas még ez nekem…
tudok tömbösítve is ha függvényt megadni neki?
hogy tudok ugyanarra a cellára hivatkozni? RC ? RC[0]? Activecell? nekem valahoyg egyiksem akar működni.
Ez ugy eakkor kellene , amikor abban a cellában szeretném a műveletek elvégezni.
Nem egyzserű nekem ez a tömbösítéses gondolkodás… 🙁Sziasztok
Most ott járok, hogy a vesszőt _ -ra cseréltem. A vessző sok helyen elkavarta a formátumot, még akkor is, ha előtte külön szöveggé formáztam a teljes oszlopot. Azt nem értem ugyan hogy miért, az eredeti-cellánként vizsgálóban ezt ez esetben nem tette meg.
De így működik az M oszlop karaktercseréje.
TexttoColumns -al szétdobtam külön oszlopokba. Ettől mondjuk jobb lenne egy elegánsabb megoldás… pl az első része a cikkszámsornak az eredeti oszlopban marad, a második megy a következő (vagy egyéb kijelölt oszlopba- sorba – cellába)oszlopba, a harmadik még újabbaEgy lépés maradt hátra , és azzal megakadtam
Vannak azok a cellák, ahol kötőjel szerepel a cikkszámban. Ez azt jelenti, hogy az ugyanabban a cellában szerepelő, előtte lévő cikkszám első három karakterét kell behelyettesíteni a . És itt nem igazán boldogulok. Tudtok ebben nekem segíteni?Egyenlőre én most itt járok a gondolkodásban:
Sub CsereBere()
Dim ido As Dateusor = Range(„M” & Rows.Count).End(xlUp).Row
Range(„M1:M” & usor).Select
Selection.NumberFormat = „@”Dim cikkszameleje As String
cikkszameleje = Left(ActiveCell, 3)Range(„M1:M” & usor).Replace What:=”-„, Replacement:=cikkszameleje
Range(„M1:M” & usor).Replace What:=”_”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”+”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”\”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”/”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=” „, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”OD.”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”,”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”________”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”_______”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”______”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”_____”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”____”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”___”, Replacement:=”_”
Range(„M1:M” & usor).Replace What:=”__”, Replacement:=”_”
Range(„M1:M” & usor).TextToColumns Destination:=Range(„o1″), other:=True, Otherchar:=”_”MsgBox Format(Now – ido, „mm:ss”)
End SubAz világos, hogy a több vesszőt korábban kell.
Abban van nekem a zavar, hogy az egyéb karaktereket utóbb cseréli , és ebből keletkezhet a több vessző. (már ha van sorrend)nagyon köszönöm!!!
Még egy kérdés. Ebben az esetben a műveletek sorrendje nem releváns a programozás tekintetében?
Mindeg ymilyen sorrendben írom, ugyanazt az eredményt adja?
Ha nem a válasz, akkor most miért került fordított sorrendben meghatározásra?Köszi
Szia
Nagyon szépen köszönöm, ez tényleg sokkal gyorsabb.
Nekem egy bajom van, hogy mindent szreetk megérteni 🙂
Az úgy nem működne, ha nem kell plusz oszlopot létrehozni, és replace -el függvénnyel megy?
Gondolataim alapján mennie kellene, csak nem tudom hogy lehet a range -el megadni azt, hogy ugyanaz a cella a végállomás…KÖszi
- A hozzászólás módosításra került: 1 year, 10 months telt el-norbifun.
Az alapfeladatot sikerült megoldanom! csak a gyorsaságon kellene javítani!!!
Szia
A karaktereknek nincs semmi tudományos értékük, az nem jelentenek sem ÉS -t , VAGY-t, nincs logikai tartalmuk.Én is pontosan ebbe az irányba indultam el. Az alábbi szösszenettel:
Sub UtódcikkszámokMeghatározásaAzÚjListában()
‘ mivel először a számokat ésszerű allpotba kell hozni, így szöveggé kell formázni az oszlopot
Sheets(„Új betöltendő árlista”).Select
Range(„M2”).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = „@”
‘Változók felvétele
‘melyik sorban keresünk
Dim i As Long
i = 2
‘milyen karaktert keresünk (k1=+;k2=szóköz;k3=/)
Dim k1 As String
k1 = „+”
Dim k2 As String
k2 = ” ”
Dim k3 As String
k3 = „/”
‘mire akarjuk cserélni (+ helyett vessző (v); szóközhelyett semmi(s); / helyett vessző(v))
Dim v As String
v = „,”
Dim s As String
s = „”‘ a kötőjel helyére irandó karakterlánc
Dim cikkszameleje As StringSheets(„Új betöltendő árlista”).Select
Do Until Sheets(„Új betöltendő árlista”).Cells(i, 1) = „”If Cells(i, 13) <> „” Then
cikkszameleje = Left(Cells(i, 13), 3)
Cells(i, 13).Value = Replace(Cells(i, 13), „-„, cikkszameleje, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), k1, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), k3, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), k2, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), „OD.”, v, 1)Cells(i, 13).Value = Replace(Cells(i, 13), „,,,,,,,,”, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), „,,,,,,,”, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), „,,,,,,”, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), „,,,,,”, v, 1)
Cells(i, 13).Value = Replaccele(Cells(i, 13), „,,,,”, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), „,,,”, v, 1)
Cells(i, 13).Value = Replace(Cells(i, 13), „,,”, v, 1)End If
i = i + 1
LoopEnd Sub
Rendben is lenne , ha a formátumok is egyeznének, de az sem egyezik.
Szóval a szöveggé formázok minden adatot az adott oszlopban , akkor helyreáll a rend, és megkapom a listát.
Most már „csak” szét kell szedni és a megfelelő cellába másolni.Illetve lefuttatva a makrót, az a tapasztalat hogy nagyon sokáig tart(18 percig ment a 44 ezer soron végig)
Arra gondoltam, ha először egy szűrést csinálnék, akkor kihagyhatnám az üres sorokat.
Abban tudnátok segíteni, hogy ha leszűröm, akkor hogy tudom neki megadni a sorokat meghatározó változót, hogy csak a leszűrt sorokban lévő cellát ellenőrizze?Nem sikerült a feltöltés, még egyszer
Attachments:
You must be logged in to view attached files.Szia
Köszi a választ
MIcrosoft 365 -öt használok.
Általában igen, 6 számjegyből álló karakterek vannak benne, ha nem akkor van a kötőjel
Jól érted, egy cellában van. Ezt kell nekem kibontanom, és egy másik munkafüzeten elhelyezni 3 különböző cellábanTöltök fel most mintát.
A megoldás jó lehet, de mellette rengeteg művelet van, így biztosan csak a makró lehet megoldás.
A táblázat maga 44 ezer sor, amivel dolgozom. 🙁
A feladat az, hogy a második lapfül M oszlopában lévő adatok, az első lapfül c,d,e,f oszlopába kerüljön. mindegyik egy helyre. Azért a négy oszlop, mert ha négy adat van mindegyiknek legyen helye.
Ha lehet akkor azzal is bonyolítanám, hogy csak az esetben, ha esetleg egyezőség van a behelyezendő adat és a meglevő adat között, akkor ne csináljon semmit, ha nincs akkor az első üres oszlopba helyezze be az adatot
Köszönettel -
SzerzőBejegyzés