Function Přepona(x, y) Přepona = Sqr(x ^ 2 + y ^ 2) End Function Function StopaMatice(x As Range) As Integer Dim i As Byte StopaMatice = 0 For i = 1 To x.Columns.Count StopaMatice = StopaMatice + x.Cells(i, i) Next i End Function Sub Normalizace() Do Set OblastDat = Application.InputBox(prompt:="Oblast dat", Type:=8) If WorksheetFunction.Sum(OblastDat) = 0 Then Reakce = MsgBox("Součet dat je roven nule. Chcete zadat jinou oblast nebo skončit?", vbAbortRetryIgnore) Loop Until Reakce = vbIgnore Or Reakce = vbAbort Or WorksheetFunction.Sum(OblastDat) <> 0 If Reakce = vbAbort Then Exit Sub Set VýstupníOblast = Application.InputBox(prompt:="Výstupní oblast", Type:=8) Řádků = VýstupníOblast.Cells(1).Row - OblastDat.Cells(1).Row Sloupků = VýstupníOblast.Cells(1).Column - OblastDat.Cells(1).Column Set VýstupníOblast = OblastDat.Offset(Řádků, Sloupků) a = "R[" & -Řádků & "]C[" & -Sloupků & "]:R[" & VýstupníOblast.Rows.Count - 1 - Řádků & "]C[" & VýstupníOblast.Columns.Count - 1 - Sloupků & "]" 'a = OblastDat.Address(ReferenceStyle:=xlR1C1) 'Absolutně VýstupníOblast.FormulaArray = "=" & a & "/SUM(" & a & "^2)^(1/2)" End Sub Function NormalizaceVektoru(x As Range) As Variant 'Vzorec se zadává jako maticový. Dim s, b(1 To 256, 1 To 256) As Double s = 1 / Sqr(WorksheetFunction.SumSq(x)) For i = 1 To x.Rows.Count For j = 1 To x.Columns.Count b(i, j) = x.Cells(i, j) * s Next j Next i NormalizaceVektoru = b End Function Sub SumaSloupce() Selection.CurrentRegion.Select a = Selection.Address Selection.Rows(Selection.Rows.Count + 1).Formula = "=sum(" & a & ")" End Sub Sub DenTýdne1() 'Výsledek je dynamický, to jest, přepočítává se. ActiveCell.FormulaR1C1 = "=WEEKDAY(RC[-1],2)" End Sub Sub DenTýdne2() 'Výsledek není dynamický. Range("c1") = Application.WorksheetFunction.Weekday(Range("a1").Value, 2) End Sub Sub Dopněk() 'Neodstraní doplněk z nabídky, to by šlo udělat odstraněním souboru *.xla ze správného adresáře a následným procházením dialogu "Doplňky". AddIns.Add("C:\Users\Dana\EXCEL\MojeMakra.xla").Installed = False End Sub