Tekstitiedostosta datan tuominen Exceliin niin, että se tekee sen oikein (VBa)

Started by nyyyps, Thu 07.01.2016 13:53:46 (UTC+0200)

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Lexa

Selevä. Ite tekisin Mail mergellä. :jees: olisi helpompi macrottaakin. Mutta jos mulle tulee sulle joku ratkasu malli mieleen niin kerron kyllä.

Joku looppihan tossa vois toimia...
"Lexa on koko Apache foorumin nettipoliisien PÄÄLLIKKÖ!" -Arto Lauri

The future unknown, but is there ever time to find out...?

Like what I do? Buy me a beer!

Tule mukaan Apachefoorumin Discord-kanavalle!

nyyyps

=OFFSET($B$4,(BlockSize*(ROW()-ROW(F$4)))+(COLUMN()-COLUMN($F4)),0,1,1)
Mutta p rivillä.
Mie sen tässä illan aikana ehin melkein hoksia, itelleni lähetin sähköpostin mutta en helkkari alkanu valmiimmaksi tekemään ku ei palkkaa makseta ku kustannuspaikalla vietetystä ajasta.

Excel, koska saan sitten naittaa samaan tiedostoon makron joka tekee tietyllä tavalla muotoillun txt:n joka nimetään uudelleen toiselle tiedostopäätteelle, samaten ku saan luoda samoista näytetunnuksista kolmannella tavalla muotoillun csv:n joka sitten taas nimetään erilaiselle näytetunnukselle, kumpainenkaan näytetunnus ei tietenkään ole excelillä ennestään tiedossa. Näiten kans sitten FSO muistella.
Yksi tiedosto, kaksi nappia kumpaa vain tarvitsee, valitse txt, saa valmis lopputulos. Sen jälkeen sujuu nautakarj laboranttinaisilta. :psp:

Kaiken takana tosiaan se, että tarvitsee vain luoda yks txt, joka on jo lähdössä oikein näytenimineen. Ei tartte kymmentä eri tiedostopohjaa sitten muokata jokaista erikseen, vaan kaikkiin saadaan vietyä yksi ja sama txt.
Allekirjoitukset näkyvät jokaisen viestin tai yksityisviestin alla. Voit käyttää BBCodea ja hymiöitä allekirjoituksessasi.

Lexa

Tuohan on ihan Excel -kaava, ei VBa -macro. Ja tuossa ois tosiaan kiinteä rivimäärä. Vastaava jossa ois maksimimäärä määritelty, muttei tiukkaa rivimäärää, olisi tämäntyyppinen =IF((BlockSize*(ROW()-ROW(F$14)))+(COLUMN()-COLUMN($F14))>=ROWS($B$4:$B$18),"",OFFSET($B$4,(BlockSize*(ROW()-ROW(F$14)))+(COLUMN()-COLUMN($F14)),0,1,1))

:think:

VBa:


Sub ColumnToTable()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ColumnToTable
' This transforms the column of data with a defined name
' of "ColumnData" to a two dimensional table whose upper
' left cell is named "StartTable". The block size of
' the data in ColumnData is specified by C_BLOCK_SIZE.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   
    Dim ColumnData As Range     ' The original column of data
    Dim RNdx As Long            ' Row index
    Dim CNdx As Long            ' Column index
   
    Dim StartRow As Long        ' Row number of Range("StartTable")
    Dim StartColumn As Long     ' Column number of Range("StartTable")
    Dim N As Long               ' Index into ColumnData
    Dim WS As Worksheet         ' Worksheet reference
   
    Const C_BLOCK_SIZE = 5      ' Block size of data in ColumnData
   
    '''''''''''''''''''''''''''
    ' Initialize the variables.
    '''''''''''''''''''''''''''
    Set ColumnData = Range("ColumnData")
    StartRow = Range("StartTable").Row
    StartColumn = Range("StartTable").Column
    RNdx = StartRow
    CNdx = StartColumn
    Set WS = Worksheets("UsingVBA")
    N = 0
   
    ''''''''''''''''''''''''''''''''''''''
    ' Loop across then down filling
    ' cells with element N of ColumnData.
    ''''''''''''''''''''''''''''''''''''''
    For RNdx = StartRow To (StartRow + (ColumnData.Rows.Count / C_BLOCK_SIZE))
        For CNdx = StartColumn To StartColumn + C_BLOCK_SIZE - 1
            N = N + 1
            WS.Cells(RNdx, CNdx).Value = ColumnData.Cells(N, 1)
        Next CNdx
    Next RNdx
   
End Sub


Ja lähde tälle: http://www.cpearson.com/excel/ColumnToTable.aspx
"Lexa on koko Apache foorumin nettipoliisien PÄÄLLIKKÖ!" -Arto Lauri

The future unknown, but is there ever time to find out...?

Like what I do? Buy me a beer!

Tule mukaan Apachefoorumin Discord-kanavalle!

nyyyps

Maksimimäärää ei voi laittaa, koska se täyttää loput solut nollilla.

Tietojen syöttö/nappivälilehti.
Tarravälilehti.
ip-välilehti, jokaiselle menetelmälle oma, sieltä indeksillä valinta mitä menee mihinkin välilehteen ja satunnaisen duplikaatin lisääminen
jne joista vain tietojen syöttö näkyvillä.

ja sama paska vielä toisen ja kolmannen kerran, koska useammanlaiset batchit

nyt nukkumaa
Allekirjoitukset näkyvät jokaisen viestin tai yksityisviestin alla. Voit käyttää BBCodea ja hymiöitä allekirjoituksessasi.

Lexa

Eikun just tolla jossa on maksimimäärä, mutta ei kiinteää määrää, ei tule niitä nollia. Kiinteällä tulee kun pitää saada rivit täyteen, tuo syöttää vain tyhjää maksimiin asti.
"Lexa on koko Apache foorumin nettipoliisien PÄÄLLIKKÖ!" -Arto Lauri

The future unknown, but is there ever time to find out...?

Like what I do? Buy me a beer!

Tule mukaan Apachefoorumin Discord-kanavalle!


nyyyps

Ok.
Ja eihän siinä tarrapohjassa niien tarvinnu olla tietyssä järjestyke4ssä, muihin paikkoihin tarttee, ni sen välilehen voi jättää pois missä sen järjestyksen räpii per menetelmä.
Allekirjoitukset näkyvät jokaisen viestin tai yksityisviestin alla. Voit käyttää BBCodea ja hymiöitä allekirjoituksessasi.

paavo


Quick Reply

Warning: this topic has not been posted in for at least 356 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it has been approved by a moderator.

Name:
Verification:
Please leave this box empty:

What is the most visible color in our forum?:
What is the name of this forum?:
Shortcuts: ALT+S post or ALT+P preview