- Okosóra és okoskiegészítő topik
- Xiaomi 14 - párátlanul jó lehetne
- Google Pixel topik
- Milyen okostelefont vegyek?
- A sógorokhoz érkezik a kompakt Vivo X200 FE
- Itthon is kapható lesz a kerámia Xiaomi Band 10
- iPhone topik
- Samsung Galaxy Watch7 - kötelező kör
- Külföldi SIM-ek itthon
- Megindult világhódító útjára az új Samsung fülhallgató
-
Mobilarena
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
-
Delila_1
veterán
válasz
kangool #27152 üzenetére
Egy felhasználói függvényes megoldás:
Function Karaktercsere(Szöveg As Range) As String
Dim strTemp As String, hossz As Integer, b As Integer, sor As Long
Dim sz As String
Const STR_2 As String = "[2]"
Const STR_5 As String = "[5]"
Const STR_7 As String = "[7]"
Const STR_10 As String = "[10]"
sor = Szöveg.Row
sz = Szöveg.Value
hossz = Len(Szöveg)
For b = 1 To hossz
If Mid(sz, b, 1) Like STR_2 Then
strTemp = strTemp & "k.csavar"
ElseIf Mid(sz, b, 1) Like STR_5 Then
strTemp = strTemp & "k.csavar2"
ElseIf Mid(sz, b, 1) Like STR_7 Then
strTemp = strTemp & "l.alátét"
ElseIf Mid(sz, b, 1) Like STR_10 Then
strTemp = strTemp & "x.menet"
Else
strTemp = strTemp & Mid(sz, b, 1)
End If
Next b
Karaktercsere = Cells(sor, "A") & "+" & strTemp
End Function -
Delila_1
veterán
válasz
scott_free #27144 üzenetére
... van egy "Emberek" nevű táblázatom egy lapon.
Ezt úgy tettem a makróba, hogy az Emberek lapon vettem fel egy táblázatot, ahol az A oszlopban vannak a nevek, B-ben a címek, C-ben a telefonok.A "lekérdezős" lap A1 cellájába tettem az érvényesítést, a megjegyzés a mellette lévő B1 cellába kerül. Ehhez a laphoz rendeltem az eseményvezérelt makrót.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Keres Target.Value
End SubMivel az eseményvezérlés csak a saját lapján tud dolgozni, egy modulba írt másik makró végzi a keresést.
Sub Keres(nev)
Dim sor As Long, Cim As String, Tel As String
With Sheets("Emberek")
sor = Application.Match(nev, .Columns(1), 0)
Cim = .Cells(sor, "B")
Tel = .Cells(sor, "C")
End With
On Error Resume Next
Cells(1, "B").AddComment
Cells(1, "B").Comment.Text Text:="Cím: " & Cim & vbLf & "Tel: " & Tel
On Error GoTo 0
End SubAz On Error Resume Next sor arra szolgál, hogy ha már van megjegyzés a B1 cellához fűzve, ne fusson hibára a makró. Ennek a feloldása az On Error GoTo 0 sor.
-
Delila_1
veterán
válasz
scott_free #27119 üzenetére
Mielőtt tovább megyünk, add meg
1. Melyik cellákhoz kellenek a megjegyzések?
2. Van-e már megjegyzés ezekhez a cellákhoz, vagy most kell létrehozni?
3. Add meg, hogy pl. a B oszlop celláihoz (B2-től) kell megjegyzéseket fűzni, amik az azonos sor A cellájának az értékét tartalmazzák. -
Delila_1
veterán
válasz
scott_free #27117 üzenetére
Sub Megj()
Range("B1").AddComment
Range("B1").Comment.Text Text:=Range("A1").Value
End SubCiklusba is teheted.
-
Delila_1
veterán
Az Excel függvényei A-tól Z-ig, Kovalcsikné Pintér Orsolya könyve. Ebben is van szó olyan függvényről, amit nem találhatunk meg a függvénylistában.
Nem a legfrissebb gyűjtemény, a pdf 2011.februárban került hozzám. A fájl nem tartalmazza a kiadás dátumát, és a tartalomjegyzék eleje is hiányzik. Az ABC rendben felsorolt függvények között (11. oldalon kezdődik) található olyan, ami a 178. oldalra ígéri a leírását, de a pdf csak 152 oldalas. Szóval nem teljes, de sok hasznos információ van benne.
-
Delila_1
veterán
válasz
karlkani #27068 üzenetére
Ha az érvényesítést úgy oldod meg, ahogy Fferi javasolta, csak a megadott 0 és 100 közötti egész számokat tudod bevinni a cellába, alfanumerikus adatot, kisebb vagy nagyobb számot, törtet nem.
Van mód a megadott tartományon kívüli adat bevitelére, de ahhoz az érvényesítés párbeszéd Hibajelzés fülén az Érvénytelen adat beírásakor hibaüzenet jelenjen meg előtti négyzetből ki kell venned a pipát, ami alapértelmezésben ott van.
A Figyelmeztető üzenet fülön adhatsz egy ilyesmi szöveget: Ebbe a cellába 0 és 100 közötti számot írhatsz. A cella fölé állva egy sárga hátterű négyzetben jelenik meg a megadott figyelmeztetés. -
Delila_1
veterán
válasz
sedyke #27058 üzenetére
3 kérdésem van
1. Ha 2003-asnál magasabb verziót használsz, makróbarátként mentetted-e a füzetet?
2. Az aktuális dátumnak a T oszlopban kell megjelennie, mikor a D-be írsz. Oda írsz?
3. A lapodhoz rendelted a makrót?Ha minden lapon el szeretnéd érni, hogy a D oszlopba történő íráskor a T-be íródjon be a dátum, akkor a makrót a ThisWorkbook laphoz kell rendelned.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
Árnymester #26973 üzenetére
Erre a feladatra nem készült fel az MS, mert állítólag közel-távol csak nálunk gyakorlat a munkanapok áthelyezése.
-
Delila_1
veterán
válasz
elttiL #26967 üzenetére
Régebbi verziókban irányított, újabbakban speciális szűrést végezz. A szűrőtartomány annak az oszlopnak a címe, amelyik az IGAZ és HAMIS értékeket tartalmazza, az alatta lévő cella pedig az IGAZ szöveg legyen, ahogy a képen látod.
A tartományt, ahonnan az érvényesítést veszed, nevezd el, pl. Nevek nevet adj neki. A névadásnál a hivatkozás a kép szerinti adatokra:
=OFSZET(Munka1!$H$2;0;0;DARAB2(Munka1!$H:$H)-1;1)
A makró – szintén a kép szerinti adatokhoz – egyetlen utasítás:
Range("B1:C11").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"F1:F2"), CopyToRange:=Range("H1"), Unique:=FalseAz érvényesítést az E1 cellába tettem.
-
Delila_1
veterán
válasz
Árnymester #26965 üzenetére
Köszi a rangot
-
Delila_1
veterán
válasz
Árnymester #26961 üzenetére
Jó lenne, amit írtam, ha nem hagyom ki belőle a szombat és vasárnap kivonását. Így jár, aki kapkod.
Hétvégékkel a makró
Function Munkanap(kezd As Date, vegez As Date)
Dim MN As Integer, ido As Integer, valami
MN = vegez - kezd
For ido = 0 To MN
valami = kezd + ido
If Weekday(valami, 2) > 5 Then MN = MN - 1
If Application.WorksheetFunction.CountIf(Range("E1:E20"), valami) > 0 Then MN = MN - 1
If Application.WorksheetFunction.CountIf(Range("G1:G10"), valami) > 0 Then MN = MN + 1
Next
Munkanap = MN
End FunctionSzerk: magyarázat
A kezd dátumhoz a For-Next ciklusban egyenként hozzáadom a két dátum közötti különbséget. Ha a kezd=2015.04.03, akkor a ciklusban az első érték ugyanez lesz (mert közben rájöttem, hogy ha 1-gyel kezdem a ciklust, az első napot nem veszi figyelembe). Ha ez a nap ünnep (szerepel az E oszlopban), vagy hétvége, akkor az össznapból (MN) levon 1-et. Ha viszont szombat, és munkanap, akkor hozzáad az MN-hez 1-et.
A ciklusban a következő esetben a 2015.04.04-et vizsgálja hasonló módon. -
Delila_1
veterán
válasz
Árnymester #26953 üzenetére
Rosszul írtam, felcseréltem a + és - jelet a két If kezdetű sorban. Bocsi, írd át!
-
Delila_1
veterán
válasz
Árnymester #26953 üzenetére
Írtam hozzá egy felhasználói függvényt. Az ünnepnapokat az E1:E20; a rendkívüli munkanapokat a G1:G10 tartományba írtam be. Ezt a két tartományt írd át a makróban a saját területeidre.
Function Munkanap(kezd As Date, vegez As Date)
Dim MN As Integer, ido As Integer, valami
MN = vegez - kezd
For ido = 1 To MN
valami = kezd + ido
If Application.WorksheetFunction.CountIf(Range("E1:E20"), valami) > 0 Then MN = MN + 1
If Application.WorksheetFunction.CountIf(Range("G1:G10"), valami) > 0 Then MN = MN - 1
Next
Munkanap = MN
End FunctionA függvény alkalmazása:
=munkanap(A3;A2), ahol az A2 a kezdő-, A3 a végző dátum.
-
Delila_1
veterán
válasz
Árnymester #26951 üzenetére
A NETWORKDAYS függvényt használd. Ennek az utolsó paramétere az a tartomány legyen, ahol az év ünnepnapjait megadod.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
littleNorbi #26943 üzenetére
Ugorj neki újra, és példaként olyan fájlt tegyél fel, mint a valóságos fájlod, de a nem publikus adatok helyére írj mást. Nem minden sort kell átmásolni 1-1 lapra? Mik a lapok nevei?
A "pl. az E27-ben van az adat" jellegű megfogalmazásokról rendszerint kiderül, hogy egy másik lap D89 cellájáról van szó. Példaként NE írj ilyen meghatározást, csakis a valóságot, másképp mint most, neked és a válaszadónak is az elejétől kell kezdeni mindent.
Nagyon fontos, hogy mintában az adatok úgy helyezkedjenek el, mint az igazi fájlban. Ezt egyébként olvashatod is a topik összefoglalójában.
-
Delila_1
veterán
válasz
Hulioboy #26938 üzenetére
Szia!
Az érvényesítésben (J5 cella) 5 név közül választhatsz.
A laphoz kell rendelned a makrót. Kiválasztod a nevet, és mikor a J7-be beírod az összeget, az ennek megfelelő cella eddigi összegét növeli a beírt összeggel.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cim As String
If Target.Address = "$J$7" Then
Select Case Range("J5")
Case "Pisti"
cim = "$F$79"
Case "Misi"
cim = "$F$80"
Case "Jóska"
cim = "$F$81"
Case "Béla"
cim = "$F$82"
Case "Kleofás"
cim = "$F$83"
End Select
Range(cim) = Range(cim) + Target
End If
End Sub -
Delila_1
veterán
válasz
littleNorbi #26899 üzenetére
Most már tud.
Az eddig felvitt adatokat másold a szűrővel, az új adatok automatikusan másolódnak majd a megfelelő lapra, mikor az utolsó (C) oszlopba beírod az adatot.
-
Delila_1
veterán
válasz
littleNorbi #26897 üzenetére
Autoszűrőt teszel a felső sorba. Szűröd a B oszlopot orvosra, kijelölöd a látható tartományt, másolod, beilleszted a következő lapra.
Új szűrés, új másolás új lapra. -
Delila_1
veterán
válasz
be.cool #26870 üzenetére
Az érvényesítésnél a Hibajelzés fülön alapban be van jelölve az Érvénytelen adat beírásakor hibaüzenet jelenjen meg négyzet. Ha ezt a pipát megszünteted, akkor lehet csak olyan adatot beírni, ami nem szerepel a listában.
A kérdésedből úgy látom, nem szeretnél az első fülön forrást megadni. A rovatba beírhatod a választható adatokat, pontosvesszővel elválasztva. Ide nem kell idézőjelek közé tenni az értékeket.
-
Delila_1
veterán
Próbáld meg ezzel, ahol az első címsor.
Sub HolTalalhato()
Dim sorB As Long, sorC As Long, usor As Integer, uoszlop As Integer
usor = Sheets(1).Range("C" & Rows.Count).End(xlUp).Row
sorB = 2
Do While Cells(sorB, 2) > ""
For sorC = 2 To usor
If Cells(sorC, 3) = Cells(sorB, 2) Then
If Cells(sorB, 4) = "" Then
Cells(sorB, 4) = Cells(sorC, 1)
Else
Cells(sorB, 4) = Cells(sorB, 4) & "–" & Cells(sorC, 1)
End If
End If
Next
sorB = sorB + 1
Loop
End Sub -
Delila_1
veterán
Nem írtad, hogy feltétlenül képletekkel, függvényekkel akarod előcsalni az eredményt. Egy rövid makróval könnyen megoldható.
Sub HolTalalhato()
Dim sorA As Long, sorB As Long, usor As Integer, uoszlop As Integer
usor = Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
sorA = 2
Do While Cells(sorA, 1) > ""
For sorB = 1 To usor
If Cells(sorB, 2) = Cells(sorA, 1) Then
uoszlop = Cells(sorA, Columns.Count).End(xlToLeft).Column + 1
Cells(sorA, uoszlop) = sorB
End If
Next
sorA = sorA + 1
Loop
End Sub -
Delila_1
veterán
válasz
m.zmrzlina #26810 üzenetére
A küldött füzetben lévő lap látszólag teljesen üres volt.
Nem én segítettem, magadtól jöttél rá, hogy a C oszlopban van valami rendellenesség.
-
Delila_1
veterán
válasz
m.zmrzlina #26808 üzenetére
Volt egyszer egy ilyen túlméretes fájlom, ott a Ctrl+nyilakkal sikerült megtalálnom a hibás cellát. 2000 körüli sorszámnál a első 1000-ben valahol állt meg a Ctrl+le A1-ből indítva. Egy halom különleges karakter volt a cellában. Fogalmam sincs, hogy kerültek oda, de a kitörlésük után nem volt baj.
Míg ott voltak, a függvények nem látták az alatta lévő sorokat.
-
Delila_1
veterán
válasz
m.zmrzlina #26805 üzenetére
Hogy jöttél rá, hogy a C oszlop a bibis?
-
Delila_1
veterán
válasz
m.zmrzlina #26805 üzenetére
Az 5,34 MB helyett.
-
Delila_1
veterán
válasz
m.zmrzlina #26803 üzenetére
Irányított ugrással (Ctrl+g) az utolsó cellát a H1048457-nek írja. A DARAB és DARAB2 függvény viszont az
A1:H1048457 tartományban nulla darabszámot ad. -
Delila_1
veterán
válasz
m.zmrzlina #26798 üzenetére
Azon a lapon lehet valami disznóság, amelyiknek a törlése normál méretűvé tette a füzetedet.
Próbálj meg egy új lapot felvenni, a hibás lapról értékként beilleszteni az adatokat ide, majd törlöd a rossz lapot.
Hátha...
-
Delila_1
veterán
válasz
bakabaka #26768 üzenetére
Az inputboxnál eleve add meg, milyen típusú értéket vársz.
Type:=0 képlet
Type:=1 szám
Type:=2 szöveg
Type:=4 logikai, true vagy false
Type:=8 cellahivatkozás (range)
Type:=16 hibaérték, mint #ÉRTÉK
Type:=64 tömb érték (array)Pl. 100 és 500 közötti szám bekérése
valasz=Application.InputBox("Adj egy 100 és 500 közötti számot", "Szám bekérése", , , , , , 1)
If valasz <100 Or valasz>500 Then Exit SubVagy
Set ter=Application.InputBox(prompt:="Kérem a tartományt",Type:=8) -
Delila_1
veterán
A laphoz kell rendelned a makrót. Mikor a B oszlopba beírsz valamit, az A oszlop azonos sorában fixen, nem képletként megjelenik az idő. Az oszlop formátumát tetszésed szerint adhatod meg, dátummal, vagy anélkül.
Ha törölsz a B-ben, az A azonos sorából is törlődik a beírt időpont. Ha 1-nél több cellába viszel be egyszerre adatot, akkor nem ír be semmit.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 2 Then
If Target = "" Then
Cells(Target.Row, 1) = ""
Exit Sub
Else
Cells(Target.Row, 1) = Now
End If
End If
End Sub -
Delila_1
veterán
válasz
thomas50.000 #26701 üzenetére
Szívesen.
-
Delila_1
veterán
válasz
thomas50.000 #26699 üzenetére
Sajnos a színezés az Excel számára nem jelent "esemény"-t, amire egy makró reagálhatna.
Írd át a ciklus végét 100-ról annyira, ahány sort szándékozol kitölteni az A oszlopban.
-
Delila_1
veterán
válasz
thomas50.000 #26697 üzenetére
Ez a makró az elsőtől a 100. sorig írja be a Nem szót a B-be.
Sub Piros()
Dim sor As Long
For sor = 1 To 100
If Cells(sor, "A").Interior.ColorIndex = 3 Then Cells(sor, "B") = "Nem"
Next
End Sub -
Delila_1
veterán
válasz
szami777 #26691 üzenetére
Az adatok elrendezése hibás. Nem lett volna szabad 1 cellába begyűjteni a különböző válaszokat.
Azt még megteheted, hogy a szövegből oszlopok menüponttal szétszeded a vesszővel elválasztott adatokat. A darabteli függvényben a tartományt erre a megnövekedett területre írod át.
-
Delila_1
veterán
válasz
huliganboy #26670 üzenetére
Az időt, helyszín, stb-t egyetlen ciklusban is másolhatnád, nem kellenek külön makrók hozzá.
-
Delila_1
veterán
válasz
huliganboy #26670 üzenetére
Ha arra gondolsz, hogy a Munka2 lap üres sorait törölnéd, akkor
Sub UresTorles()
Dim usor As Long, sor As Long
Sheets("Munka2").Select
usor = Range("B" & Rows.Count).End(xlUp).Row
For sor = usor To 3 Step -1
If Application.WorksheetFunction.CountA(Range("B" & sor & ":" & "H" & sor)) = 0 Then
Rows(sor).EntireRow.Delete
End If
Next
End SubA transzponálós makrókban a for-next ciklus for sorában a Step 2 adja meg, hogy a Munka2 lap minden második sorában lévő adatok másolódjanak át egy másik lapra. Vagy ezt a step 2-t töröld, és indíts a sortörléssel, vagy a sortörlést a transzponálások után végezd el.
-
Delila_1
veterán
Természetesen.
Sub Legnagyobb()
Dim sor As Long, usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = usor To 2 Step -1
If Len(Cells(sor, 1)) = 8 Then
If Left(Cells(sor, 1), 6) = Left(Cells(sor - 1, 1), 6) Or _
Cells(sor - 1, 1) = "" Then
Rows(sor - 1).EntireRow.Delete
End If
End If
Next
End Sub -
Delila_1
veterán
Az Fferi által említett makró:
Sub Legnagyobb()
Dim sor As Long, usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = usor To 2 Step -1
If Left(Cells(sor, 1), 6) = Left(Cells(sor - 1, 1), 6) Or _
Cells(sor - 1, 1) = "" Then
Rows(sor - 1).EntireRow.Delete
End If
Next
End SubAz első oszlopban többször szereplő programneveket gyomlálja ki.
Nem említetted, hogy vannak-e üres sorok a tartományban. Beleírtam, hogy azokat is törölje. -
Delila_1
veterán
válasz
huliganboy #26643 üzenetére
Örülök, hogy sikerült, szívesen.
-
Delila_1
veterán
válasz
huliganboy #26640 üzenetére
A BAL(TRANSZPONÁLÁS(... képlet hibás. Ha a transzponált adatoknál az eredeti értékek bal oldali 5 karakterét akarod látni, akkor a makró
Sub Transzponalas()
Dim sorInnen As Long, sorIde As Long, oszlop As Integer
Dim usor As Long
Sheets("Munka2").Select
sorInnen = 3: sorIde = 1: usor = Range("B" & Rows.Count).End(xlUp).Row
For sorInnen = 3 To usor Step 2
For oszlop = 2 To 8
Sheets("Munka1").Cells(sorIde, 1) = Left(Cells(sorInnen, oszlop), 5)
sorIde = sorIde + 1
Next
Next
End Sub -
Delila_1
veterán
válasz
huliganboy #26640 üzenetére
Egy rövid makró gyorsan megoldja a problémát.
Sub Transzponalas()
Dim sorInnen As Long, sorIde As Long
Sheets("Munka2").Select
sorInnen = 3: sorIde = 1
Do While Cells(sorInnen, 2) <> ""
Range("B" & sorInnen & ":H" & sorInnen).Copy
Sheets("Munka1").Cells(sorIde, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True
sorInnen = sorInnen + 2
sorIde = sorIde + 7
Loop
End SubA Munka1 lapra transzponál, az első sortól kezdve. A kezdő sort a sorIde változóban módosíthatod, a lap nevét a Sheets("Munka1"). kezdetű sorban.
-
Delila_1
veterán
válasz
samfishR #26632 üzenetére
Egy egyetlen soros makró elintézi.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Cells(Target.Row, 2) = Date
End SubLapfülön jobb klikk, Kód megjelenítése. Bejutottál a VB szerkesztőbe. A jobb oldali nagy fehér felületre másold be a fenti makrót. A füzetedet makróbarátként kell elmentened.
-
Delila_1
veterán
válasz
bakabaka #26626 üzenetére
B3-ra hivatkozunk a D4 cellán állva.
R1C1 hivatkozásnál ki kell írni az értékadás bal oldalára az R1C1-et.
Range("D4").FormulaR1C1 = "=R[-1]C[-2]" '– relatív hivatkozás
Range("D4").FormulaR1C1 = "=R3C[-2]" '– vegyes hivatkozás, fix sor
Range("D4").FormulaR1C1 = "=R[-1]C2" '– vegyes hivatkozás, fix oszlop
Range("D4").FormulaR1C1 = "=R3C2" '– fix hivatkozásNem R1C1 tip. hivatkozásnál elhagyható a Formula, de ki is írhatod.
Range("D4") = "=B3" '– relatív hivatkozás
Range("D4") = "=B$3" '– vegyes hivatkozás, fix sor
Range("D4") = "=$B3" '– vegyes hivatkozás, fix oszlop
Range("D4") = "=$B$3" '– fix hivatkozásEgy tartományba 1 lépésben is beírhatod a képleteket. Pl. a D4:D10-ben akarod 2-vel szorozni a B oszlop 1 sorral fentebbi értékét:
Range("D4:D10").FormulaR1C1 = "=R[-1]C2" '– vegyes hivatkozás, fix oszlop
Range("D4:D10") = "=$B3*2" '– vegyes hivatkozás, fix oszlop
Range("D4:D10") = "=B3*2" '– relatív hivatkozásÖsszegzés: R1C1 formátumnál a szögletes zárójelek között megadott érték relatív, enélkül fix hivatkozás, nem R1C1 formátumnál a $ jel rögzít.
-
Delila_1
veterán
válasz
Margit néni #26611 üzenetére
Szia Margit néni!
Könnyebb megérteni, ha a szerkesztőlécen kijelölöd a SOR()*10-1 részt, ami az INDIREKT hivatkozási sorszámát adja meg. F9-et nyomsz, és a kijelölt rész helyén megjelenik az értéke. Ez a 2. sorban 11 lesz, a 3-ban 21. Esc-pel lépj ki, másképp fixen az érték marad a cellában a kijelölt részen.
Ez a módszer minden képletre igaz, mindenhol a kijelölt rész értékét mutatja meg az F9.
Ha nem egészen tiszták a képletek, szólj, és privátban részletesen leírom.
Látom, tegnap ma feküdtél le (ha egyáltalán lefeküdtél).
Üdv, Delila
-
Delila_1
veterán
válasz
Margit néni #26607 üzenetére
1. Az első sorba
=INDIREKT("Munka1!A" & SOR())&INDIREKT("Munka1!B" & SOR())
1. A második sorba=INDIREKT("Munka1!A" & SOR()*10-9)&INDIREKT("Munka1!B" & SOR()*10-9)
ezt másold az alatta lévőkbe.2. Az első sorba
=Munka1!C12. A második sorba
=INDIREKT("Munka1!C" & SOR()*10-9)
innen másolhatod lefelé. -
Delila_1
veterán
válasz
lazlogogola #26503 üzenetére
-
Delila_1
veterán
-
Delila_1
veterán
válasz
azopi74 #26475 üzenetére
Szerinted miből van több? Multiból, vagy egyébből?
"...szerintem általánosan a topicban ésszerűbb lenne amúgy is áttérnünk annak a használatára - legalább a függvényeknél"
Igazad van, használjunk angolt, és hétfőn is legyenek zárva a boltok, hiszen akkor én sohasem vásárolok be.
Nem kell külön progi, elég, ha beszúrsz egy nemzetközi makrólapot.
-
Delila_1
veterán
válasz
azopi74 #26467 üzenetére
Elég sok országban élő Excel alkalmazóval van kapcsolatom, minden országban lefordították.
Szerintem ha válaszolni akarsz a kérdésekre, mindenkinek azon a nyelven írd a függvényeket, ahogy a kérdező kéri. Másképp nincs értelme a segítségnek, nem segítség, hanem bosszantás.
-
Delila_1
veterán
Most tetszőleges név, és tetszőleges terület esetén is elkészíti a beosztást. Nincs benne viszont, hogy minden terület legalább 1× szerepeljen. Nem minden esetben van megfelelő megoldás, pl. ha sok az eszkimó (ember), és kevés a fóka (terület).
Sub Terulet()
Dim sor As Integer, oszlop As Integer, vel As Integer, i As Integer, soruj As Integer
Dim NevUsor As Long, TerUsor As Long
Dim tomb()
NevUsor = Range("A" & Rows.Count).End(xlUp).Row
TerUsor = Range("G" & Rows.Count).End(xlUp).Row
ReDim tomb(1 To TerUsor)
Application.ScreenUpdating = False
Range("B4:E" & NevUsor) = ""
For sor = 4 To NevUsor
UjSor:
For oszlop = 2 To 5
UJRA:
Randomize
vel = Round(Rnd() * (TerUsor - 3) + 3, 0) '
If tomb(vel) > 0 Then GoTo UJRA ' Ha volt már a sorszám, akkor újra generál
tomb(vel) = 1
Next
oszlop = 2
For i = 1 To TerUsor 'Beírja a területet, lenullázza a tömböt
If tomb(i) = 1 Then
Cells(sor, oszlop) = Cells(i, "G")
oszlop = oszlop + 1
End If
tomb(i) = 0
Next i
For soruj = 3 To TerUsor 'Van-e 3× a terület?
If Application.CountIf(Range("$B$4:$E" & NevUsor), Range("G" & soruj)) > 3 Then
Range("B" & sor & ":E" & sor) = ""
For i = 1 To TerUsor
tomb(i) = 0
Next
GoTo UjSor
Exit For
End If
Next
Next
Application.ScreenUpdating = True
End Sub -
-
Delila_1
veterán
válasz
Gravity1234 #26457 üzenetére
COUNTA
Megszámolja, hány cellában van valamilyen adat.
-
Delila_1
veterán
válasz
kőbaltazár #26453 üzenetére
Attól függ, melyik verziót használod.
2007-től van mód a szín szerinti szűrésre, a szűrt cellákat pedig összegezheted a RÉSZÖSSZEG függvénnyel.
Korábbi verzióhoz keress itt rá a SumColor kifejezésre.
Új hozzászólás Aktív témák
Hirdetés
- Okosóra és okoskiegészítő topik
- Last Epoch
- The Division 2 (PC, XO, PS4)
- Egyéni arckép 2. lépés: ARCKÉPSZERKESZTŐ
- Magga: PLEX: multimédia az egész lakásban
- Melyik tápegységet vegyem?
- Xiaomi 14 - párátlanul jó lehetne
- Star Trek
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Google Pixel topik
- További aktív témák...
- AKCIÓ! HP Elitedesk 800 G1 USDT mini asztali számítógép - i7 4770S 16GB RAM 128GB SSD Intel HD
- Használt Intel procik - Core 2 - Dual Core
- Bomba ár! Lenovo ThinkPad X270 - i5-6G I 8GB I 256GB SSD I 12,5" FHD I HDMI I Cam I W10 I Garancia!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- Bomba ár! HP ProBook 450 G7 - i5-10GEN I 16GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gar
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest