Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kopiranje podataka iz opsega u txt fajl kao niz

[es] :: Office :: Excel :: Kopiranje podataka iz opsega u txt fajl kao niz

[ Pregleda: 3417 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksandar 82

Član broj: 272422
Poruke: 6
*.dynamic.isp.telekom.rs.



Profil

icon Kopiranje podataka iz opsega u txt fajl kao niz11.12.2014. u 13:47 - pre 113 meseci
Pozdrav svima.

Pretrazivao sam forum ali nisam nasao resenje nigde.

Treba da podatke iz tabele da prekopiram u txt fajl, ali drugcijim redom.

Podatke i reda (Horizontalno), treba da ih poslazem da budu u koloni verikalno.
Znaci A1, B1, C1. da bude
A1
A2
A3,

bez ikakvih tacaka i crtica isped. Imam 10 kolona i oko 50000 redova i to sve treba da prepravim u txt fajl i da nakon desete redova ide prazan red u txt fajlu i zatim da podaci iz drugog reda iz exela u novih 10 redova.
Prikačeni fajlovi
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
95.180.71.*



+257 Profil

icon Re: Kopiranje podataka iz opsega u txt fajl kao niz11.12.2014. u 18:15 - pre 113 meseci
Da bi prebacio kolone u redove i obrnuto...
Kopiraj sve što ti treba, otvori novi sheet, klikni na ćeliju desnim i odaberi paste special. Onda tu zakači "transpose" i klikni na OK. Dobićeš prethodne redove u kolonama i obrnuto.

Jedini problem je da ćeš sad imati 50000 kolona u 10 redova ;)

Ne znam da li ovo ikako možeš da uradiš samo pomoću excela a bez pomoći nekog programskog jezika...

Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

Ivek33

Član broj: 66174
Poruke: 2898



+66 Profil

icon Re: Kopiranje podataka iz opsega u txt fajl kao niz11.12.2014. u 21:17 - pre 113 meseci
Citat:
Aleksandar 82:
i da nakon desete redova ide prazan red u txt fajlu i zatim da podaci iz drugog reda iz exela u novih 10 redova.
Probaj preko VBA za transpose sa ovog linka a vidi i attach
Prikačeni fajlovi
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
*.19.107.0

Sajt: www.gowi.rs


+109 Profil

icon Re: Kopiranje podataka iz opsega u txt fajl kao niz12.12.2014. u 07:44 - pre 113 meseci
Rešenje sa VBA je jednostavno - dve petlje (po redovima i kolonama izvornih podataka) i jedan brojač - jedno rešenje je dao Ivek. Pretpostavljam da nisi imao iskustva sa VBA jer bi i sam verovatno došao do toga, pa ajde da probamo da rešimo bez programiranja.

Pošto u izvornim podacima svakom redu ima 10 kolona to umnogome olakšava posao jer možemo naći jednoznačno preslikavanje iz izvornih u ciljne podatke, bez vođenja računa o "istoriji". (U VBA ovo nije problem jer podatke popunjavamo redom, pa lako mogu da se preskoče prazna polja)

Kad malo analiziramo problem potrebno je od matrice M(r,c) gde je r broj redova i c broj kolona formirati niz A(n) gde je n broj elemenata niza r * c. Za neki opšti k-ti element niza možemo tačno da odredimo odgovarajuću vrednost iz matrice M
A(k) odgovara
red i = (k-1) div 10 + 1, gde je div oznaka za celobrojno deljenje i
kolona j = (k-1) mod 10 + 1 gde je mod oznaka za ostatak pri deljenju sa 10

Npr
A(1) = M( (1-1) div 10 +1, (1-1) mod 10 +1) = M(0+1, 0+1) = M(1,1)
...
A(29) = M( (29-1) div 10 +1, (29-1) mod 10 +1) = M (2+1, 8+1) = M (3, 9)
A(30) = M( (30-1) div 10 +1, (30-1) mod 10 +1) = M(2+1, 9+1) = M(3,10)
A(31) = M( (31-1) div 10 +1, (31-1) mod 10 +1) = M(3+1, 0+1) = M(4,1)
...

Sad možemo da pređemo na Excel.
1/ Na novom listu u koloni A napiši formulu
Code:
="R"& INT((ROW() -1) /10 )+1 & "C" & MOD(ROW()-1;10) +1

Kopiraj ovu formulu u sve ćelije kolone A do 500000

Rezultat treba da bude broj reda i kolone iz originalne matrice u obliku
nrp u A29 - R3C9, A30 - R3C10, A31 - R4C1

2/ U koloni pored (B), sada ćemo na osnovu dobijenih adresa i funkcije INDIRECT formirati željeni niz
Code:
=INDIRECT("Sheet1!"&A1; FALSE)

Kopiraj ovu formulu u sve ćelije kolone B do 500000.

Sve je ovo moguće i pomoću jedne (kombinovane) formule, ali je ovako lakše za praćenje.

3/ Kopiraj celu kolonu B i paste u prazan txt faj

Problem koji je ostao je prazan red nakon svakog desetog reda u txt fajlu. Ovo je najlakše rešiti tako što celu jedanaestu kolonu popuniš sa nekom kombinacijom znakova koja se ne može naći drugde npr /**/. U prethodnim formulama svuda zameniš 10 sa 11. Na kraju u txt fajlu, nakon paste, uradiš replace tog niza /**/ sa praznim stringom.
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prikačeni fajlovi
 
Odgovor na temu

Aleksandar 82

Član broj: 272422
Poruke: 6
*.dynamic.isp.telekom.rs.



Profil

icon Re: Kopiranje podataka iz opsega u txt fajl kao niz12.12.2014. u 14:11 - pre 113 meseci
Hvala Vam obojci.

To je to sto mi treba.
Jedino Ivek, tvoj makro mi pravi problem tj, kopira redove, radi i onda stane ispise gresku 400, ali sam to skontao da je zato sto popuni sve redove 65459, pa kad mi treba moram da dodajem po 10000 redova da bi mi stali u jedan sheet. Iz ovog razloga sam i trazio da se kopira u txt fajl. Al u svakom slucaju radi. Hvala jos jednom.
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
212.200.121.*

Sajt: www.gowi.rs


+109 Profil

icon Re: Kopiranje podataka iz opsega u txt fajl kao niz12.12.2014. u 15:37 - pre 113 meseci
Verzije Office 2007 i dalje nemaju to ograničenje u pogledu broja redova.

Evo kod koji odmah kreira txt fajl da zaobiđeš problem sa brojem redova
Code:
Option Explicit
Sub MatricaUTxt()
' Upisuje podatke iz tabele u txt fajl
' Izvorna tabela ima 10 kolona
' Svaka ćelija se ispisuje u posebnom redu
'
' P.Jovanovic za elitesecurity.org
'
Dim sh As Worksheet
Dim rw As Long, rwEnd As Long
Dim cl As Integer
Const clEnd As Integer = 10
Dim FilePath As String

' File u koje se upisuje u istom folderu kao radna sveska i naziv export.txt
FilePath = ThisWorkbook.Path & "\export.txt"
' Otvaranje txt fajla
Open FilePath For Output As #1

Set sh = ActiveSheet            ' Uzima se aktivni list
rwEnd = sh.Range("A65535").End(xlUp).Row ' Poslednji popunjen red
For rw = 1 To rwEnd
 For cl = 1 To clEnd
    ' Upis u txt
    Print #1, sh.Cells(rw, cl).Text 
 Next cl
 ' Upis praznog reda
 Print #1, 
Next rw

' Zatvaranje txt fajla
Close #1

End Sub



[Ovu poruku je menjao Jpeca dana 12.12.2014. u 16:47 GMT+1]
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

Aleksandar 82

Član broj: 272422
Poruke: 6
*.dynamic.isp.telekom.rs.



Profil

icon Re: Kopiranje podataka iz opsega u txt fajl kao niz23.12.2014. u 09:24 - pre 112 meseci
Malo sam morao da proucim kako se prave makroi i upisuju kodovi kod iveka na sajtu.
Mackro radi.

Ako imam manje kolona da li onda menjam samo

Dim sh As Worksheet
Dim rw As Long, rwEnd As Long
Dim cl As Integer
Const clEnd As Integer = upisujem broj kolona
Dim FilePath As String

' File u koje se upisuje u istom folderu kao radna sveska i naziv export.txt
FilePath = ThisWorkbook.Path & "\export.txt"
' Otvaranje txt fajla
Open FilePath For Output As #1

Set sh = ActiveSheet ' Uzima se aktivni list
rwEnd = sh.Range("A65535").End(xlUp).Row ' Poslednji popunjen red
For rw = 1 To rwEnd
For cl = 1 To clEnd
' Upis u txt
Print #1, sh.Cells(rw, cl).Text
Next cl
' Upis praznog reda
Print #1,
Next rw

Hvala jos jednom
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
212.200.121.*

Sajt: www.gowi.rs


+109 Profil

icon Re: Kopiranje podataka iz opsega u txt fajl kao niz23.12.2014. u 10:17 - pre 112 meseci
Da. Ovo je neki osnovni makro koji predpostavlja je da nemaš prazne redove i kolone. Ukoliko postoje nije problem da se preskoče kao i da se urade neka druga prilagođavanja.


Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

[es] :: Office :: Excel :: Kopiranje podataka iz opsega u txt fajl kao niz

[ Pregleda: 3417 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.