-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
Topikgazda
válasz
#73966957
#42039
üzenetére
Szia!
Az alábbi makrókat együtt kell bemásolnod egy modulba. Igyekeztem általánossá tenni.
Az alkotó elemeket az O oszloptól lehet beírnod. Az első oszlop 2. cellája az alapár.
A többi oszlop tartalmazza a megnevezést és az árakat párban. A makró a P2 cellából indul ki (de ez nem azt jelenti, hogy ide kell az alapárat írnod), ez legyen mindenképpen a kiindulási területen. A fejléceket nem másolja. Az utolsó oszlopba kerül az összár.
Most lehet 2-3-4 sőt akár 5 összetevője is az összárnak. Persze vedd figyelembe, hogy minél több a változat, annál több lesz a variáció és nő a futási idő is. Ha már unod, akkor a Ctrl+ Break megszakítja a futást, erre két helyen figyel a makró - ott ahol DoEvents van.
A varialhat makrót kell elindítanod, a másikat majd az meghívja, ha kell neki. Íme:Sub varialhat()Dim u As Integer, alap As DoubleDim x As Long, y As Long, kepl As StringDim arazas As Range, oszl As RangeDim oszlopok As New CollectionDim varia As LongDim oszlsz As IntegerDim valami(), szoroz As LongSet arazas = Range("P2").CurrentRegionalap = arazas.Cells(2, 1).Value: kepl = "=A2"varia = 1For x = 2 To arazas.Columns.CountWith arazas.Columns(x)oszlopok.Add Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)), Str(x - 1)If x Mod 2 = 0 Then varia = varia * oszlopok(x - 1).Cells.Count: kepl = kepl & "+" & Cells(2, x + 1).Address(rowabsolute:=False)End WithDoEventsNextoszlsz = oszlopok.CountApplication.ScreenUpdating = FalseIf Range("A2") <> "" Then Range(Range("A2"), Cells(Range("A2").End(xlDown).Row, Range("A2").End(xlToRight).Column)).ClearContentsu = 2Range(Cells(u, 1), Cells(u + varia - 1, 1)).Value = alapy = 2ReDim Preserve valami(1 To varia, 1 To oszlsz)szoroz = 1For x = oszlsz To 1 Step -1sokszoroz oszlopok(x), x, szoroz, varia / oszlopok(x).Cells.Count / szoroz, valami'oszl.Copy Destination:=Cells(u, y)'Range(Cells(u, y), Cells(u + oszl.Cells.Count - 1, y)).AutoFill Destination:=Range(Cells(u, y), Cells(varia + 1, y)), Type:=xlFillCopyIf x Mod 2 = 1 Then szoroz = szoroz * oszlopok(x).Cells.CountNexty = 2 + oszlszRange(Range("B2"), Cells(UBound(valami, 1) + 1, y - 1)).Value = valamiRange(Cells(u, y), Cells(u + varia - 1, y)).Formula = keplRange(Cells(u, y), Cells(u + varia - 1, y)).Value = Range(Cells(u, y), Cells(u + varia - 1, y)).ValueApplication.ScreenUpdating = TrueRange("A1").SelectMsgBox "Készen vagyok!"End SubSub sokszoroz(ByRef mit, hova, hanyszor, ciklus, ByRef valami())Dim x As Long, cl As Range, w As Integer, z As Longx = 1For z = 1 To ciklusFor Each cl In mit.CellsFor w = 1 To hanyszorvalami(x, hova) = cl.Valuex = x + 1NextNextDoEventsNextEnd SubHa bármi probléma adódik, csak írj.
Üdv.
Új hozzászólás Aktív témák
- A Legújabb! Dobozos Új DELL XPS 13 9340/ULTRA 7-155H/32 GB Ram/1TB SSD/AI BOOST+INTEL ARC
- Intel Xeon E5-2600v4 processzorok készleten 2680v4,2683v4,2697v4,2697Av4(áfás számla, 2 év garancia)
- LG 45GS95QX - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- Lenovo ThinkPad T14s Gen 6 Ryzen AI 7 PRO 350W Radeon 860M 32 GB RAM 7500 MT/s 512 GB 3év gar
- ASUS VIVOBOOK S14 FLIP - 14"WUXGA Érintő - Ryzen 5 5600H - 16GB - 512GB - Win11 - MAGYAR - Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Fferi50