Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz nzsolt74 #20112 üzenetére

    Hello,

    ...Az első oszlop 14 soronként ugyanaz, ezekből szeretnék egy új lapon 14 oszlopot fejléccel...

    Makrós megoldásod van már, de ezt képletekkel is el lehet érni, mivel az adatod struktúrált.

    A lényeg, hogy az új lapodon a második sorban a Név mezőbe a másik lap 1 sorát, a 15-et, a 29-et stb. kell kiíratni.

    Ez az alábbi logikával írható le: 14*{0;1;2;3..}+1
    Excelben a képleted: =14*(SOR()-2)+1 (2-t kell kivonnunk mert az elsőben fejléc van már)

    A születési idő a 2, 16, 30 stb. sorokban van, ahol a képlet a fentiektől csak annyiban tér el, hogy nem 1-et, hanem mindig 2-t kell adni az elsőrészhez.

    Mivel a név az első oszlopban van, a születési idő a másodikban (és így tovább), ezért ha használjuk az OSZLOP függvényt akkor nem kell nekünk megadni, hogy egyik esetben 1-et, a másikban 2-t stb. kell hozzádni. Vagyis az univerzális képlet: =14*(SOR()-2)+OSZLOP()
    Már csak cella hivatkozás kell, amelyre az INDIREKT függvény szolgál.
    A végső képlet tehát: =INDIREKT("Masiklap!B"&14*(SOR()-2)+OSZLOP())

    Ezt másold le jó sokszor, hogy biztos lefedd a másik lapon összes sorát (10000 sor esetén elgé 715 sorba).

    A képlet ott ahol üres a cella 0-t fog kírni, ezt el tudod tüntetni ha vizsgálod a SZÖVEG.E függvénnyel, hogy kaptál-e adatot vissza.

    üdv.

  • Delila_1

    veterán

    válasz nzsolt74 #20112 üzenetére

    Egy rövid makró megcsinálja.

    Sub Transzponalas()
    Dim WS1 As Worksheet, WS2 As Worksheet
    Dim sor As Long, tol As Long, ig As Long, ures As Long
    Set WS1 = Sheets("Munka1")
    Set WS2 = Sheets("Munka2")

    WS1.Activate
    'Címsor másolása
    Range("A1:A14").Copy
    WS2.Range("A1").PasteSpecial Paste:=xlPasteValues, Transpose:=True

    'Egységek másolása
    ures = 2: tol = 1: ig = 14
    Do While Cells(ig, 1) <> ""
    Range("B" & tol & ":B" & ig).Copy
    WS2.Range("A" & ures).PasteSpecial Paste:=xlValues, Transpose:=True
    tol = tol + 14: ig = ig + 14: ures = ures + 1
    Loop
    End Sub

    Szerk.: A Set-tel kezdődő 2 sorban írd át a lapneveket. Munka1 helyett az adatokat tartalmazó lapodat, Munka2 helyett pedig azt írd be, ahova át akarod írni más formában.

Új hozzászólás Aktív témák

Hirdetés