Excel VBA: Prevod "sloupcove" tabulky na "souradnicovou" tab Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Adalbert
nováček
Příspěvky: 28
Registrován: únor 11
Pohlaví: Muž
Stav:
Offline

Excel VBA: Prevod "sloupcove" tabulky na "souradnicovou" tab

Příspěvekod Adalbert » 14 úno 2011 09:54

Dobry den,

potrebuji pomoci s prevodem dat viz. priloha.
V Listu1 je pocatecni stav, kde jsou data strukturovana do radku.
V Listu2 je cilovy stav, ktereho bych chtel dosahnout. Strukturovat data z Listu1 do tabulky jakoby souradnicove.
V Listu3 pak jsou jen definovany rozsahy pole1 a pole2.

Existuje jedna funkce, prikaz pres kterou to mohu udelat,
nebo je potreba slozit nekolik funkci abych dosahl pozadovaneho stavu?

Dekuji
Přílohy
Priklad.xls
(17.5 KiB) Staženo 97 x

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel VBA: Prevod "sloupcove" tabulky na "souradnicovou"

Příspěvekod navstevnik » 14 úno 2011 11:19

Funkce (vzorec) pouze vraci funkcni hodnotu do bunky, ve ktere je zapsana.
Pozadovanou transformaci dat z radku do pole lze vykonat procedurou VBA.
Nize uvedena procedura z listu 3 nacte hlavicky radku a sloupcu ciloveho pole a vlozi je na list 2. Postupne prochazi radky na listu 1 a podle hodnot ve sloupcich list1!Axx:Bxx prenasi hodnoty z list1!Cxx na list 2.
Je to pracovni verze, neni jeste osetren pripad, ze na listu 1 jsou v polich hodnoty neobsazene na listu 3, otestuj:

Kód: Vybrat vše

Option Explicit

Sub Transfer()
  Dim SBlk As Range, SCll As Range
  Dim TmpBlk As Range, TmpCll As Range, ABC() As Variant, XYZ() As Variant
  Dim TWsht As Worksheet, TCll As Range, i As Integer
  Dim TOffsR As Integer, TOffsC As Integer

  ' definovat bloky
  With Worksheets("list1")
    Set SBlk = .Range("a2:a" & .Cells(.Rows.Count, "a").End(xlUp).Row)
  End With
  Set TWsht = ActiveWorkbook.Worksheets("list2")
  Set TCll = TWsht.Range("a1")

  With Worksheets("list3")
    ' definovat bloky,  nacist data, vlozit hlavicky radku a sloupcu na list2
    Set TmpBlk = .Range("a2:a" & .Cells(.Rows.Count, "a").End(xlUp).Row)
    ReDim ABC(TmpBlk.Rows.Count)
    i = 1
    For Each TmpCll In TmpBlk.Cells
      ABC(i) = TmpCll.Value
      TCll.Offset(i, 0).Value = ABC(i)
      i = i + 1
    Next TmpCll
    Set TmpBlk = .Range("b2:b" & .Cells(.Rows.Count, "b").End(xlUp).Row)
    ReDim XYZ(TmpBlk.Rows.Count)
    i = 1
    For Each TmpCll In TmpBlk.Cells
      XYZ(i) = TmpCll.Value
      TCll.Offset(0, i).Value = XYZ(i)
      i = i + 1
    Next TmpCll
  End With
  ' prochazet radkova data na list1, presouvat do pole na list2
  For Each SCll In SBlk.Cells
    With SCll
      ' nalezt ofsety  radku v polich ABC a sloupcu v polich XYZ
      For TOffsR = LBound(ABC) + 1 To UBound(ABC)
        If .Value = ABC(TOffsR) Then
          Exit For
        End If
      Next TOffsR
      For TOffsC = LBound(XYZ) + 1 To UBound(XYZ)
        If .Offset(0, 1).Value = XYZ(TOffsC) Then
          Exit For
        End If
      Next TOffsC
      'prenest data
      TCll.Offset(TOffsR, TOffsC).Value = .Offset(0, 2).Value
    End With
  Next SCll
  Set SBlk = Nothing
  Set SCll = Nothing
  Set TmpBlk = Nothing
  Set TmpCll = Nothing
  Set TWsht = Nothing
  Set TCll = Nothing
End Sub

Adalbert
nováček
Příspěvky: 28
Registrován: únor 11
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA: Prevod "sloupcove" tabulky na "souradnicovou"  Vyřešeno

Příspěvekod Adalbert » 14 úno 2011 11:56

Funguje podle predstav. Diky.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
    od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw)
    2
    4782
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12193
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    4626
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3318
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Excel 2016 - vzorec kombinace podmínek Příloha(y)
    od MK_Vs » 08 led 2025 17:56 » v Kancelářské balíky
    5
    4074
    od lubo. Zobrazit poslední příspěvek
    14 led 2025 00:51

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů