Omlouvám se za komplikace, ale netušil jsem ze mně toto vyřeší jedno makro.
Ad 1) nee nebude, už není potřeba, vyřešil jste to makrem kde se list pojmenuje podle toho z jaké buňky je makro spuštěno.
Ad 2) V seznamu je to co půjde jako název listu z buňek ve sloupci C (např: abcde) a do buňky B10 v novém makrem vytvořeném listu se dotáhne buňka ze sloupce A stejného řádku (dle příkladu abcde = 12345).
Děkuji za čas a úpravu
elninoslov napsal/a:
Spravil som to takto:
-overuje existenciu listu
-ak list existuje, overí či odkaz v tej bunke sedí s textom v bunke a prípadne odkaz opraví
-ignoruje prázdne bunky
-funguje na multioblasť
-spúšťa sa skratkou Ctrl+M
Sub Vytvor_list()
Dim Are As Range, Bunka As Range, H(), x As Integer, y As Long, idx As Integer
If TypeName(Selection) <> "Range" Then MsgBox "Vyberte oblast buněk.", vbExclamation: Exit Sub
idx = Worksheets.Count
Application.ScreenUpdating = False
For Each Are In Selection.Areas
If Are.Cells.Count = 1 Then ReDim H(1 To Are.Rows.Count, 1 To Are.Columns.Count): H(1, 1) = Are.Value Else H = Are.Value
For y = 1 To UBound(H, 1)
For x = 1 To UBound(H, 2)
If Not IsEmpty(H(y, x)) Then
Set Bunka = Are.Cells(y, x)
With Bunka
If Kontrola_NeExistence(CStr(H(y, x))) Then
If .Hyperlinks.Count > 0 Then
If Not Range(.Hyperlinks(1).SubAddress).Parent.Name = H(y, x) Then .Hyperlinks.Add Anchor:=Bunka, Address:="", SubAddress:="'" & H(y, x) & "'!A1", ScreenTip:=H(y, x)
End If
Else
wsVZOR.Copy After:=Worksheets(idx)
ActiveSheet.Name = H(y, x)
ActiveSheet.Range("A3") = H(y, x)
.Hyperlinks.Add Anchor:=Bunka, Address:="", SubAddress:="'" & H(y, x) & "'!A1", ScreenTip:=H(y, x)
idx = idx + 1
End If
End With
End If
Next x
Next y
Next Are
wsSeznam.Activate
Application.ScreenUpdating = True
End Sub
Function Kontrola_NeExistence(sName As String) As Boolean
On Error Resume Next
Kontrola_NeExistence = Len(Worksheets(sName).Name)
End Function
Vy tam máte ale ešte makro, ktoré Vám pri zmene bunky A3 v ktoromkoľvek liste zmení jeho názov na zmenenú hodnotu.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$3" Then Exit Sub
ActiveSheet.Name = Range("a3").Value
End Sub
Tu vidím veľký problém v tých odkazoch. Vy keď zmeníte názov listu zmenením tej bunky A3, tak Vám prestane správne odkazovať link v liste Seznam.Příloha: 49948_vytvareni-listu-ze-vzoru-s-hyperlinkem.zip (21kB, staženo 2x)
elninoslov napsal/a:
To nebude problém. Len ak vkladáte prílohu XLSM musíte ju zabaliť do ZIP/RAR.
Dobrý den, v makrech a vba se vůbec nevyznám, tak Vás zkušené poprosím o radu s vytvořením tohoto makra.
Potřeboval bych aby makro, které spustím na aktivní buňce ve sloupci A na listu Seznam udělalo kopii listu VZOR s umístěním na konec sešitu, pojmenovalo ho shodně s obsahem aktivní buňky ve sloupci A + vytvořilo hypertextový odkaz na tento nový list.
Vzor přikládám a bylo by to takto možné?
Děkuji
elninoslov napsal/a:
Takto?
=AVERAGE(IF((A1:A50<>"")*(COUNTIF(OFFSET(A1;;;ROW(A1:A50));A1:A50)=1);COUNTIF(A1:A50;A1:A50)))
=PRŮMĚR(KDYŽ((A1:A50<>"")*(COUNTIF(POSUN(A1;;;ŘÁDEK(A1:A50));A1:A50)=1);COUNTIF(A1:A50;A1:A50)))
Rozsah 50 si zmeňte na Váš rozsah.
Děkuji, vzorec funguje perfektně pro zvolenou oblast buněk, já mám ale oblast a to jsem před tím neuvedl A1:A10000 do které se mně načítají přibývající data odkazem z externího sešitu. Pokud tedy rozšířím oblast na A:A10000, která obsahuje prozatím i prázdné buňky, tak vzorec počítá nesmyslný průměr. Potřeboval bych tedy aby vzorec počítal průměr jen z buněk, které jsou vyplněné. (prázdná v podstatě není žádná, protože všech 10000 buněk obsahuje odkaz na externí sešit). Půjde to nějak prosím?
Děkuji
elninoslov napsal/a:
Napadá ma maticový vzorec (Ctrl+Shift+Enter):
=AVERAGE(IF(COUNTIF(OFFSET(A1;;;ROW(A1:A31));A1:A31)=1;COUNTIF(A1:A31;A1:A31)))
=PRŮMĚR(KDYŽ(COUNTIF(POSUN(A1;;;ŘÁDEK(A1:A31));A1:A31)=1;COUNTIF(A1:A31;A1:A31)))
elninoslov napsal/a:
Premýšľam ako odpovedať, bo skôr ako napíšem ako fungujú základné veci v Exceli, ako je COUNTIF a relatívne/absolútne adresovanie buniek, tak skôr to vygooglite.)
COUNTIF - spočíta počet výskytov dátumu v oblasti.
Túto oblasť si určíme vždy od prvej bunky $A$1, po aktuálny riadok v stĺpci A. Teda $A$1:A1, $A$1:A2, $A$1:A3 ...
Takže v každom riadku počíta koľko sa tam nachádza tých dátumov od začiatku po práve počítaný riadok.
Rozdiel medzi $A$1 a A1:
$A$1 - absolútne adresovanie buniek
A1 - relatívne adresovanie buniek
Značka absolútneho adresovania, teda $, pribíja danú súradnicu, aby sa nehýbala, pri kopírovaní vzorca. Tu na začiatku pribijeme aj stĺp A aj riadok 1, preto oblasť spočítavania vždy začína v $A$1.
Narozdiel od toho relatívne adresovanie, tam kde $ nieje, sa mení, podľa toho, kam vzorec posunieme/skopírujeme. Preto sa v každom riadku mení adresa koncovej bunky, pri skopírovaní vzorca na A1, A2, A3, ...
PS: Ešte presnejšie by to malo byť $A$1:$A1
elninoslov napsal/a:
=COUNTIF($A$1:A1;A1)
Dobrý den, prosím o radu jak na automatické číslování buněk v závislosti na obsahu sousední buňky.
Příklad: ve sloupci A vypisuji datum, např: 8x pod sebou je datum 8.2.2021, zítra budu pokračovat a zapíšu 9x datum 9.2.2021. Nyní musím do sloupce B očíslovat počet výskytů konkrétního datumu 1-10 a zítra příkladně 1-8. Potřeboval bych, aby se mně do buněk ve sloupci B tyto čísla vzorcem nějak vypisovali (počítaly) automaticky. Děkuji za radu
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.