Skip to content

Instantly share code, notes, and snippets.

@muzikovam
Created November 3, 2016 15:03
Show Gist options
  • Save muzikovam/4daa0aef5a1c22bbcc748efba9e25e07 to your computer and use it in GitHub Desktop.
Save muzikovam/4daa0aef5a1c22bbcc748efba9e25e07 to your computer and use it in GitHub Desktop.
Sub Makro1()
'
' CTRL + t (t podle řetězce)
'
'Základem je soubor s 2 listy, kde jsou data v nepřehledné formě a nejde z nich lehce sestavit kontingenční tabulka
For i = 1 To 2
nahraditMezery
pomocNaVVyh
Sheets.Add After:=ActiveSheet
Sheets(2).Select
vlozeniDat
vlozeniKonst
vlozeniCisel
If Sheets(1).Name = "stock" Then
VVyhStock
Else
VVyhSales
End If
If i = 1 Then
Presun
End If
Next i
MsgBox ("Hotovo ;-)")
End Sub
Sub nahraditMezery()
'Makro k snadnému pohybu po listu pomocí xlDown apod., k tomu se prázdná místa nahradí "0"
Range("A8").Select
Selection.CurrentRegion.Select
Selection.Replace What:="", Replacement:="0", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Sub vlozeniDat()
'vkládání dat z jednoho listu do druhého
'nejdříve se vloží výrobky a k nim počet prodaných litrů na jednotlivých obchodech
'počet výrobků je proměnlivý a počet jednotlivých obchodů také
Dim pocetradku As Integer
Dim pocetsloupcu As Integer
Dim i As Integer
pocetradku = pocetradkuFC
pocetsloupcu = pocetsloupcuFC
Sheets(1).Activate
Range("A8:L8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets(2).Activate
Range("A1").Select
ActiveSheet.Paste
Range("A2:L2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
For i = 2 To pocetsloupcu
Range("A" & lastrow + 1).Select
ActiveSheet.Paste
Range("A2:L" & pocetradku + 1).Select
Selection.Copy
Next i
End Sub
Sub pomocNaVVyh()
'
' ke každému obchodu je přiděleno číslo, aby ve finální fázi bylo možné dohledat podle čísel jednotlivé obchody u prodejů
'
'
Range("M4").Select
ActiveCell.FormulaR1C1 = "1"
Range("N4").Select
ActiveCell.FormulaR1C1 = "2"
Range("O4").Select
ActiveCell.FormulaR1C1 = "3"
Range("M4:O4").Select
Selection.AutoFill Destination:=Range(Cells(4, 13), Cells(4, pocetsloupcuFC + 12)), Type:=xlFillDefault
End Sub
Function lastrow()
'poslední řádek v prvním sloupci
lastrow = ActiveWorkbook.ActiveSheet.Cells(1, 1).End(xlDown).Row
End Function
Function lastrowN()
'poslední řádek ve sloupci N
lastrowN = ActiveWorkbook.ActiveSheet.Cells(1, 14).End(xlDown).Row
End Function
Sub vlozeniKonst()
'vložení čísel do finální tabulky, podle kterých pak bude možno dohledat čísla jednotlivých obchodů k prodejům
Dim pocetradku As Integer
Dim pocetsloupcu As Integer
pocetradku = pocetradkuFC
pocetsloupcu = pocetsloupcuFC
Columns("A:A").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Range("A1").Select
ActiveCell.FormulaR1C1 = "i"
Range("A2:A" & pocetradku + 1).Select
Selection.FormulaArray = "1"
For i = 2 To pocetsloupcu
Range("A" & lastrow + 1 & ":A" & lastrow + pocetradku).Select
Selection.FormulaArray = i
Next i
End Sub
Function pocetradkuFC()
'počet řádků od osmého řádků prvního sloupce(slouží k zjištění počtu výrobků)
pocetradkuFC = ActiveWorkbook.Sheets(1).Cells(8, 1).End(xlDown).Row - 8
End Function
Function pocetsloupcuFC()
'počet sloupců od sedmého řádku třináctého sloupce (slouží k zjištění počtu obchodů)
pocetsloupcuFC = ActiveWorkbook.Sheets(1).Cells(7, 13).End(xlToRight).Column - 12
End Function
Sub vlozeniCisel()
'vkládá prodeje
Dim pocetsloupcu As Integer
Dim i As Integer
pocetsloupcu = pocetsloupcuFC
Range("N1").Select
ActiveCell.FormulaR1C1 = "Data"
Sheets(1).Activate
ActiveSheet.Cells(9, 13).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets(2).Activate
Range("N2").Select
ActiveSheet.Paste
For i = 2 To pocetsloupcu
Sheets(1).Activate
ActiveSheet.Cells(9, 12 + i).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets(2).Activate
Range("N" & lastrowN + 1).Select
ActiveSheet.Paste
Next i
End Sub
Sub VVyhStock()
'vyhledává čísla obchodů na karte "Stock"
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Range("B1").Select
ActiveCell.FormulaR1C1 = "Store No."
Range("B2").Select
ActiveCell.FormulaR1C1 = "=HLOOKUP(RC[-1],stock!R4:R8,5,0)"
Selection.AutoFill Destination:=Range("B2:B" & lastrow)
Range("B2:B" & lastrow).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:A").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
End Sub
Sub VVyhSales()
'vyhledává čísla obchodů na karte "Sales"
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Range("B1").Select
ActiveCell.FormulaR1C1 = "Store No."
Range("B2").Select
ActiveCell.FormulaR1C1 = "=HLOOKUP(RC[-1],sales!R4:R8,4,0)"
Selection.AutoFill Destination:=Range("B2:B" & lastrow)
Range("B2:B" & lastrow).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:A").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
End Sub
Sub Presun()
'
' přesouvá karty
'
'
Sheets(3).Select
Sheets(3).Move Before:=Sheets(1)
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment