Hirdetés
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Akciókamerák
- AMD vs. INTEL vs. NVIDIA
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Elkezdte felszámolni a GPU-s PhysX támogatását az NVIDIA
- Nvidia GPU-k jövője - amit tudni vélünk
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- AMD Navi Radeon™ RX 7xxx sorozat
- Apple asztali gépek
- Hobby elektronika
-
PROHARDVER!
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
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 -
thomas50.000
csendes tag
Sub Piros()
If Cells(2301, 7).Interior.ColorIndex = 3 Then
Cells(2301, 14) = "Nem"
End If
End SubEzt a makrót találtam hozzá, ezzel csak annyi a baj, hogy csak a 2301-es sorra érvényes, nekem pedig az összes sorra kéne...
Ezt hogy kéne átírni, hogy minden sornál működjön?A válaszokat előre is köszönöm!
-
thomas50.000
csendes tag
Sziasztok!
Excelben szeretnék egy olyan dolgot csinálni, hogy ha pl. az A3-as cella színét megváltoztatom, akkor a B3-as cellába írjon be mondjuk "Nem" szöveget.
=HA(CELLA("szín"; A3) = "v";"Nem"; 0)
Ezzel próbálkoztam, de nem igazán sikerül...
Ha csak makróban megoldható, és azt valaki megcsinálná nekem az is nagy segítség lenne, mert én sajnos nem nagyon értek hozzá...
Előre is köszönöm!
-
thomas50.000
csendes tag
Sziasztok!
Excelben szeretnék egy olyan dolgot csinálni, hogy ha pl. az A3-as cella színét megváltoztatom, akkor a B3-as cellába írjon be mondjuk "Nem" szöveget.
=HA(CELLA("szín"; A3) = "v"; A3 * "Nem"; 0)
Ezzel próbálkoztam, de nem igazán sikerül...
Ha csak makróban megoldható, és azt valaki megcsinálná nekem az is nagy segítség lenne, mert én sajnos nem nagyon értek hozzá...
Előre is köszönöm!
-
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.
-
szami777
addikt
válasz
Delila_1 #26690 üzenetére
Köszönöm a válaszod.
Megpróbáltam úgy, ahogy te írtad, valamennyire sikerült is, de valahogy mégse.
Itt a kép róla: [link]
Sajnos pl a tengerparti üdüléshez csak azt számolja, ahol egyedül azt a választ adták, azokat nem számolja bele, ahol több választ adtak, köztük a tengerparti üdülést is. -
szami777
addikt
-
Fferi50
Topikgazda
válasz
szami777 #26686 üzenetére
Szia!
Az értékek területére is be kellene vinni az egyetlen meglevő meződet (mármint az A oszlopot), úgy hogy a darabszám függvénnyel legyen összesítve. (Mivel most csak sorcimkéid vannak, hozzá tartozó adatok pedig nincsenek, ezért nem tud megjeleníteni semmit a diagram.)
Üdv.
[ Szerkesztve ]
-
szami777
addikt
Sziasztok, a segítségeteket kérném.
Kérdőíves adatokból kéne kördiagramot csináljak, de sehogy se sikerül.
Egy oszlop van, tehát nem több, 1 kérdés, amire 80 ember 6 különböző szöveges választ adott. Ezt szeretném körön ábrázolni, hogy ki melyik választ választotta, milyen arányban, de sehogy sem sikerül. Neten utánaolvastam, azt írták, hogy ezt kimutatás diagrammal kéne, de egyszerűen nem tudom megcsinálni, mert nem akar megjelenni semmiféle diagram. Valakinek van ötlete?
Lőttem egy képet róla, látható jobb oldalt, ha bepipálom kis fekete kockát jobb oldalt és behúzom a 4 közül az egyikbe, akkor se történik semmi, biztos én csinálok rosszul valamit, nem értek hozzá sajnos.
(2007-es magyar nyelvű excel)
Előre is köszönöm.[ Szerkesztve ]
-
-
azopi74
addikt
válasz
sedyke #26680 üzenetére
Azt javaslom, szerintem írd felül az üzletileg kritikus (titkos) részeket, és töltsd fel valahova a felhőbe, akkor valószínűleg tudunk segíteni. Lehetnek egész oszlopra hivatkozó függvények, telehányt Name Manager (névkezelő) , vagy akármi. Látatlanban nehéz megmondani.
-
-
sedyke
tag
Sziasztok!
Van egy excel file-om, 6.5MB az egesz.
Van benne korulbelul 10-12 munkalap, ebbol kb. 8 Pivot tabla. Nemi keplet is, de nem sok, mert miutan osszegyujtottem a szukseges adatokat, atalakitom az eredmenyt ertekke.
A problemam az, hogy a fajl nagyon belassult. A megnyitasa pl. eltart 5 percig minimum.
Van otletetek, hogy mitol lehet? Mit tudnek csinalni vele?
Az adatmennyiseg, es a tablak szama folyamatosan novekszik, igy egyre rosszabb a helyzet.Elore is koszonom a valaszokat!
-
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.
-
huliganboy
addikt
válasz
Delila_1 #26668 üzenetére
Szia!
A pár nappal ezelőtti makrót amit készítettél az egyik barátommal továbbvittük kicsit....
A kérdése maz lenn, hogy az üres sorokat, hogyan tudnánk kiszedni.....Köszönöm!
Sub ido()
Dim sorInnen As Long, sorIde As Long, oszlop As Integer
Dim usor As Long
Sheets("Munka2").Select
sorInnen = 3: sorIde = 2: usor = Range("B" & Rows.Count).End(xlUp).Row
For sorInnen = 3 To usor Step 2
For oszlop = 2 To 8
Sheets("Munka5").Cells(sorIde, 3) = Left(Cells(sorInnen, oszlop), 5)
Sheets("Munka5").Cells(sorIde, 5) = Right(Cells(sorInnen, oszlop), 5)
sorIde = sorIde + 1
Next
Next
Sheets("Munka5").Select
Call helyszin
End Sub
Sub helyszin()
Dim sorInnen As Long, sorIde As Long, oszlop As Integer
Dim usor As Long
Sheets("Munka2").Select
sorInnen = 3: sorIde = 2: usor = Range("B" & Rows.Count).End(xlUp).Row
For sorInnen = 4 To usor Step 2
For oszlop = 2 To 8
Sheets("Munka5").Cells(sorIde, 7) = Cells(sorInnen, oszlop)
sorIde = sorIde + 1
Next
Next
Sheets("Munka5").Select
Call nap
End Sub
Sub nap()
Dim sorInnen As Long, sorIde As Long, oszlop As Integer
Dim usor As Long
Dim hossz As Long
Sheets("Munka2").Select
sorInnen = 1: sorIde = 2: usor = Range("b" & Rows.Count).End(xlUp).Row
For sorInenn = 3 To usor Step 2
For oszlop = 2 To 8
Sheets("Munka5").Cells(sorIde, 2) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde, 4) = Cells(sorInnen, oszlop)
sorIde = sorIde + 1
Next
Next
Call edzo
End Sub
Sub edzo()
Dim sorInnen As Long, sorIde As Long, oszlop As Integer
Dim usor As Long
Sheets("Munka2").Select
sorInnen = 3: sorIde = 2: usor = Range("B" & Rows.Count).End(xlUp).Row
For sorInnen = 3 To usor Step 4
For oszlop = 1 To 1
Sheets("Munka5").Cells(sorIde, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 1, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 2, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 3, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 4, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 5, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 6, 1) = Cells(sorInnen, oszlop)
Next
For oszlop = 1 To 1
Sheets("Munka5").Cells(sorIde + 7, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 8, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 9, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 10, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 11, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 12, 1) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 13, 1) = Cells(sorInnen, oszlop)
Next
For oszlop = 2 To 8
sorIde = sorIde + 1
Next
For oszlop = 2 To 8
sorIde = sorIde + 1
Next
Next
Call korosztaly
End Sub
Sub korosztaly()
Dim sorInnen As Long, sorIde As Long, oszlop As Integer
Dim usor As Long
Sheets("Munka2").Select
sorInnen = 3: sorIde = 2: usor = Range("B" & Rows.Count).End(xlUp).Row
For sorInnen = 5 To usor Step 4
For oszlop = 1 To 1
Sheets("Munka5").Cells(sorIde, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 1, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 2, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 3, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 4, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 5, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 6, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 7, 6) = Cells(sorInnen, oszlop)
Next
For oszlop = 1 To 1
Sheets("Munka5").Cells(sorIde + 7, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 8, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 9, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 10, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 11, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 12, 6) = Cells(sorInnen, oszlop)
Sheets("Munka5").Cells(sorIde + 13, 6) = Cells(sorInnen, oszlop)
Next
For oszlop = 2 To 8
sorIde = sorIde + 1
Next
For oszlop = 2 To 8
sorIde = sorIde + 1
Next
Next
Sheets("Munka5").Select
End Sub -
Thrawnad
senior tag
Van egy olyan problémám, hogy egy excel táblában volt egy pár feltételes formázás.
Másolgatták a cellákat ide oda, így a formázás is sokszorozódott.
Szeretném az összest kitörölni egyszerre, hogy az eredetit vissza tudjam tenni.
Van rá valami mód?Ui: Csak én lehetek ennyire béna megtaláltam közben
Thrawnad
[ Szerkesztve ]
-
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 -
-
azopi74
addikt
Szia.
Nem írtad milyen nyelvű excel (és milyen verzió), de angol 2010-ben és 2013-ban:
File/Options/Advanced és tedd be a pipát az "Enable fill handle and cell drag and drop "
magyarban fájl/beállítások/speciálisban keresd (kitöltőjel használatának engedélyezése)
2007-ben az office menüben van valahol.
-
zhari
csendes tag
Ebben esetleg tud valaki segíteni?
Szerintem ezekkel a sorokkal van baj:
x(i, 9) = objFolder.GetDetailsOf(objFolderItem, 9)
x(i, 10) = objFolder.GetDetailsOf(objFolderItem, 10)Lehet ezek csak korábbi Excel verzióban működnek?
AZ új már máshol tárolja szerzőt és az utolsó módosítót? -
azopi74
addikt
válasz
Delila_1 #26654 üzenetére
Hehe, ez jó trükk,
Eddig mindig vagy így csináltam:=FKERES(SZÖVEG(cellahivatkozás;"#");tartomány;oszlop; tartományban_keres)
vagy fordított logikával tömbfüggvényesen így:
{=FKERES(cellahivatkozás;ÉRTÉK(tartomány);oszlop; tartományban_keres)}
De az eddig eszembe se jutott, hogy úgy alakítsam röptében szöveggé a keresett értéket, hogy egyszerűen egy üres sztringet hozzáfűzök a számhoz
-
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. -
zhari
csendes tag
válasz
Fferi50 #26648 üzenetére
Köszi.
Ezt találtam még a neten de nem akar működni a szerző és az tulaj bejegyzés kinyerése. Meg tudnátok nézni h mi baja lehet?
Előre is köszi
Option Explicit
Public x()
Public i As Long
Public objShell, objFolder, objFolderItem
Public FSO, oFolder, Fil
Sub MainExtractData()
Dim NewSht As Worksheet
Dim MainFolderName As String
Dim TimeLimit As Long, StartTime As Double
ReDim x(1 To 65536, 1 To 11)
Set objShell = CreateObject("Shell.Application")
TimeLimit = Application.InputBox("Please enter the maximum time that you wish this code to run for in minutes" & vbNewLine & vbNewLine & _
"Leave this at zero for unlimited runtime", "Time Check box", 0)
StartTime = Timer
Application.ScreenUpdating = False
MainFolderName = BrowseForFolder()
Set NewSht = ThisWorkbook.Sheets.Add
x(1, 1) = "Path"
x(1, 2) = "File Name"
x(1, 3) = "Last Accessed"
x(1, 4) = "Last Modified"
x(1, 5) = "Created"
x(1, 6) = "Type"
x(1, 7) = "Size"
x(1, 8) = "Owner"
x(1, 9) = "Author"
x(1, 10) = "Title"
x(1, 11) = "Comments"
i = 1
Set FSO = CreateObject("scripting.FileSystemObject")
Set oFolder = FSO.GetFolder(MainFolderName)
'error handling to stop the obscure error that occurs at time when retrieving DateLastAccessed
On Error Resume Next
For Each Fil In oFolder.Files
Set objFolder = objShell.Namespace(oFolder.Path)
Set objFolderItem = objFolder.ParseName(Fil.Name)
i = i + 1
If i Mod 20 = 0 And TimeLimit <> 0 And Timer > (TimeLimit * 60 + StartTime) Then
GoTo FastExit
End If
If i Mod 50 = 0 Then
Application.StatusBar = "Processing File " & i
DoEvents
End If
x(i, 1) = oFolder.Path
x(i, 2) = Fil.Name
x(i, 3) = Fil.DateLastAccessed
x(i, 4) = Fil.DateLastModified
x(i, 5) = Fil.DateCreated
x(i, 6) = Fil.Type
x(i, 7) = Fil.Size
x(i, 8) = objFolder.GetDetailsOf(objFolderItem, 8)
x(i, 9) = objFolder.GetDetailsOf(objFolderItem, 9)
x(i, 10) = objFolder.GetDetailsOf(objFolderItem, 10)
x(i, 11) = objFolder.GetDetailsOf(objFolderItem, 14)
Next
'Get subdirectories
If TimeLimit = 0 Then
Call RecursiveFolder(oFolder, 0)
Else
If Timer < (TimeLimit * 60 + StartTime) Then Call RecursiveFolder(oFolder, TimeLimit * 60 + StartTime)
End If
FastExit:
Range("A:K") = x
If i < 65535 Then Range(Cells(i + 1, "A"), Cells(65536, "A")).EntireRow.Delete
Range("A:K").WrapText = False
Range("A:K").EntireColumn.AutoFit
Range("1:1").Font.Bold = True
Rows("2:2").Select
ActiveWindow.FreezePanes = True
Range("a1").Activate
Set FSO = Nothing
Set objShell = Nothing
Set oFolder = Nothing
Set objFolder = Nothing
Set objFolderItem = Nothing
Set Fil = Nothing
Application.StatusBar = ""
Application.ScreenUpdating = True
End Sub
Sub RecursiveFolder(xFolder, TimeTest As Long)
Dim SubFld
For Each SubFld In xFolder.Subfolders
Set oFolder = FSO.GetFolder(SubFld)
Set objFolder = objShell.Namespace(SubFld.Path)
For Each Fil In SubFld.Files
Set objFolder = objShell.Namespace(oFolder.Path)
'Problem with objFolder at times
If Not objFolder Is Nothing Then
Set objFolderItem = objFolder.ParseName(Fil.Name)
i = i + 1
If i Mod 20 = 0 And TimeTest <> 0 And Timer > TimeTest Then
Exit Sub
End If
If i Mod 50 = 0 Then
Application.StatusBar = "Processing File " & i
DoEvents
End If
x(i, 1) = SubFld.Path
x(i, 2) = Fil.Name
x(i, 3) = Fil.DateLastAccessed
x(i, 4) = Fil.DateLastModified
x(i, 5) = Fil.DateCreated
x(i, 6) = Fil.Type
x(i, 7) = Fil.Size
x(i, 8) = objFolder.GetDetailsOf(objFolderItem, 8)
x(i, 9) = objFolder.GetDetailsOf(objFolderItem, 9)
x(i, 10) = objFolder.GetDetailsOf(objFolderItem, 10)
x(i, 11) = objFolder.GetDetailsOf(objFolderItem, 14)
Debug.Print x(i, 1), x(i, 2), x(i, 11)
Else
Debug.Print Fil.Path & " " & Fil.Name
End If
Next
Call RecursiveFolder(SubFld, TimeTest)
Next
End Sub
Function BrowseForFolder(Optional OpenAt As Variant) As Variant
'Function purpose: To Browser for a user selected folder.
'If the "OpenAt" path is provided, open the browser at that directory
'NOTE: If invalid, it will open at the Desktop level
Dim ShellApp As Object
'Create a file browser window at the default folder
Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
'Set the folder to that selected. (On error in case cancelled)
On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0
'Destroy the Shell Application
Set ShellApp = Nothing
'Check for invalid or non-entries and send to the Invalid error
'handler if found
'Valid selections can begin L: (where L is a letter) or
'\\ (as in \\servername\sharename. All others are invalid
Select Case Mid(BrowseForFolder, 2, 1)
Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
Case Else
GoTo Invalid
End Select
Exit Function
Invalid:
'If it was determined that the selection was invalid, set to False
BrowseForFolder = False
End Function[ Szerkesztve ]
-
itanczos
senior tag
Sziasztok!
Ez nem annyira mély víz, de elakadtam.
Hogyan tudnék egy olyan táblázatban az fkeres függvénnyel keresni, ahol a kulcs mezőben a szám helyett ez van: ="szám"
???
Vagyis a 38 helyett ="38"
A fő táblázatban a kereséső mezőben viszont a szám van. -
Delila_1
veterán
válasz
huliganboy #26643 üzenetére
Örülök, hogy sikerült, szívesen.
-
oxox
addikt
Ave Guruk!
kerdes:
raklikkelek egy cellara amiben egy olyan fuggveny van amit szeretnek lehuzni (de siman 1,2,3-al sem megy), es nem jelenik meg a cella jobb also sarkaban a kis negyzet....
hol tudom ezt visszakapcsolni?thanks
oxox -
Fferi50
Topikgazda
Szia!
Indulj el az így rendezett listád utolsó sorától felfelé. Ez a sor megmarad, az előző sorokat addig törlöd visszafelé, amíg az első 6 karaktere ugyanaz mint a megmaradó(utolsó) soré. Ha változott az első 6 karakter, kezded újra az eljárást (az eltérő sor megmarad, a többit visszafelé törlöd, amíg másik programot nem találsz.)
Arra figyelj, hogy a sor kitörlése után az aktulális sor száma nem változik meg, de helyére bekerül az alatta levő sor, ezért mindig vissza kell lépni egyet a sorokon.
Üdv.
[ Szerkesztve ]
-
-KP-
addikt
Üdv!
kell egy listát készítenem munkahelyemen. a lényeg annyi, hogy a mainframen az összes rendszerünkön futó programról kell egy lista. ezzel semmi gond nincs. megfelelő könyvtár megfelelő állományait szövegformában ki tudom listázni. a gond annyi, hogy egy programból több verzió lehet. például ha van egy X123456 program amiből van 00, 10 meg 20-as verzió, akkor az 3 szor fog szerepelni.
Mindig 8 karakter hosszú a programnév, első hat a program, 7-8karakter jelöli a verziót.
Pl. így:
x1234504
x1234505
x1234520
x1234522
x1234525
x1234526
x1234530
x1234531
x1234533
x1234534
x1234599Itt pl. látszik hogy az x12345-ös programból 11 verzió van, 04-es az első, 99-es az utolsó.
a végső listát úgy kellene rendeznem,egyesítenem hogy egy program csak egyszer szerepeljen benne a legutolsó verzióval. tehát maradjon meg a x1234599 sor, de az előtte levő sorok nem kellenek. erre valakinek valami ötlete?
összesen több tízezer program van, tehát manuális átnyálazás kizárva
[ Szerkesztve ]
-
zhari
csendes tag
Sziasztok!
Olyan makróra lenne szükségem ami egy adott mappa (és almappái?) összes Word, Excel (és ha lehet pdf) fájljának a nevét felsorolja egy Excel oszlopban.
Közben meglett de iderakom hátha másvalaki is tudja használni:
Szép napot.
Sub ListAllFiles()
Dim fs As FileSearch, ws As Worksheet, i As Long
Set fs = Application.FileSearch
With fs
.SearchSubFolders = False ' set to true if you want sub-folders included
.FileType = msoFileTypeAllFiles 'can modify to just Excel files eg with msoFileTypeExcelWorkbooks
.LookIn = "C:\" 'modify this to where you want to serach
If .Execute > 0 Then
Set ws = Worksheets.Add
For i = 1 To .FoundFiles.Count
ws.Cells(i, 1) = .FoundFiles(i)
Next
Else
MsgBox "No files found"
End If
End With
End Sub -
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.
-
huliganboy
addikt
Sziasztok!
Ezt a függvényt, hogy tudom több száz soron át ismételni, manuális bevitel nélkül?
=BAL(TRANSZPONÁLÁS(Munka2!B3:H3);5)
A Munka2 B3 és H3 oszlop adatait rakja föggőlegesen egymás alá... Minden második sorból kellene hivatkozni..... Tehát a fenti B3-H3 után B5-H5 majd B7-H7 és így tovább következik...
UI: A függvény sajnos csak crtl+shift+enter esetén tömbként működik....
Köszönöm
-
Shazam91
újonc
Sziasztok!
Nem vagyok nagy VBA expert, ezért segítségeteket kérném makróíráshoz. Adott egy Munkalap azon van egy Gomb, ez a gomb mindössze annyit csinál, hogy törli néhány általam megadott (mármint a makróban) cella értékét a munkalapon.
A problémám az, hogy ha ezt a munkalapot másolom, akkor a másolt lapon a Gomb nem működik tovább, illetve csak, akkor, ha újra hozzárendelem a makrót. Mi lehet a megoldás, hogy ezt ne kelljen minden másolás alkalmával megtenni?
(Bocsi ha kicsit szájbarágós csak az érthetőség kedvéért)
Válaszokat előre is köszi!
-
garga01
őstag
Sziasztok!
Excel 2010-ben (magyar) szeretnék diagramot ábrázolni, úgy hogy mintha egy négyzet 4 olda lenne rendre az x tengely. Lehet ilyet megvalósítani valahogy? Vagy egyszerűen a diagramot forgatni?
Valami ilyesmit szerenék:
-
Fferi50
Topikgazda
válasz
kőbaltazár #26636 üzenetére
Szia!
A helyi menüt is a ribbon kezeléssel tudod megváltoztatni - saját ribbon (menüszalag) hozzáadásával.
Az egyik legjobb útmutató:Az egyéni szűrés (speciális szűrés) menüpontot a Beállítások - Menüszalag testreszabása menüpontban ki tudod tenni egy általad preferált - akár mindig látható helyre.
Egyébként az Alt+G és utána Alt+C billentyűk kombinációja indítja a párbeszédpanelját (magyar nyelvű verzióban).Üdv.
-
kőbaltazár
tag
Sziasztok!
Excel 2010 ben van mód arra, hogy módosítsam a helyi menüt?
Ha nincs akkor van-e billentyűparancs az egyéni szűrés elérésére?
Köszi[ Szerkesztve ]
-
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.
-
samfishR
senior tag
Sziasztok,
Olyat hogy lehet, hogy ha pl A2 cellába beírok valamit, akkor B2 cellába beírja az aznapi dátumot mikor kitöltöttem A2-t? Köszönöm előre is!!
-
Louro
őstag
válasz
Fferi50 #26604 üzenetére
Szia,
a cellák elé beírva, hogy melyik munkalapon találhatóak, úgy Type Mismatch. Ez se jó megoldás.
Szerk.: Úgy már sikerült, hogy a külön definiált range után még odapasszintottam a .address-t.
Péntek óta ismerkedek ezzel a kiegészítéssel is. Bár ha Range-ként definiáltam, akkor ezt feleslegesnek érzem, de biztos jó okkal hozták így létre.Szóval a jó megoldás:
Külön kellett deklarálni egy változót a range-nek, majd a függvényben úgy hivatkoztam rá ,hogy variable.address[ Szerkesztve ]
-
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.
[ Szerkesztve ]
-
bakabaka
csendes tag
válasz
alfa20 #26625 üzenetére
Igen, kössz a segítséget, eddig én is nagyjából így gondoltam, viszont igazán biztos akkor lennék, ha megértettem, ha mind a négyféle hivatkozást rutinból tudnám kezelni. Mivel nem akarok visszaélni az időddel és a segítőkészségeddel, úgy érzem, az lenne igazán hatékony, ha két kérdésre teljesen rövid, konkrét választ kaphatnék:
1. Mi az alábbi két parancs közötti lényeges különbség, mikor melyiket használhatjuk/használjuk:
Range("D4").Formula =
Range("D4").FormulaR1C1 =2. Maradva az eredeti felállásnál, tehát D4-ben állunk, és a B3-as cellára hivatkoznánk, konkréltan milyen makróparancs hatására kerülnek bele D4-be az alábbi képletek:
=$B$3 (amennyire megértettem, ez "=R3C2)
=B3 (amennyire megértettem, ez "=R[-1]C[-2])
=B$3 (amennyire megértettem, ez "=R[-1]C2)
=$B3 (amennyire megértettem, ez "=R3C[-2])Bocsi, de azt hiszem, hogy nekem ez a dedós módszer kell ahhoz, hogy biztonsággal tudjam használni
-
alfa20
senior tag
válasz
bakabaka #26624 üzenetére
Szia!
Először is szedjük ketté a 'R3C2'-őt.
Az első része: 'R3' = Row 3, azaz Sor 3 (magyarul: 3. sor)
A második része: 'C2' = Column 2, azaz Oszlop 2 (magyarul: 2. oszlop)
Ez a két érték adja meg a cella helyzetét, akár két koordináta érték hosszúság/szélesség csak itt sor/oszlop.
Ez a cellában a '$B$3' értéknek felel meg,Ha viszont kijelölsz egy cellát és hozzá/tőle akarsz viszonyítani, akkor az 'R' és/vagy 'C' mögé '[ ]' jelet kell tenni amiben meg tudod adni, hogy mennyi cellával odébb akarsz hivatkozni.:
tehát ha ki van jelölve a B3 cella és azt adod meg makróban, hogy: R[-1] akkor az a B3 cellától egyel feljebb levőre mutat B2, míg a R[2] a kettő sorral lentebb levőre B5.
Az oszlopnál ugyan ez a helyzet csak itt a mínusz érték C[-1] felfelé, a plusz értél C[1] lefelé.Remélem tudtam segíteni!
[ Szerkesztve ]
-
bakabaka
csendes tag
Sziasztok!
Sürgős makrósegítségre van szükségem, aki tud, kérem segítsen!
Olyan (online), lehetőleg magyar nyelvű leírást keresek, ahonnan még én is világosan megértem, hogy hogyan tudok egy cellában képletet megadni abszolút, relatív és vegyes hivatkozással. Eddig úgy vélem, hogy pl. ilyeneket értek:
Range("D4").Formula = "=B3*10" ez a D4-be beírja "=B3*10"-et
Range("D4").FormulaR1C1 = "=R3C2*10" ez a D4-be beírja a 3. sor 2. elemének 10-szeresét, tehát ugyanúgy "=B3*10"-et
Range("D4").FormulaR1C1 = "=R[-1]C[-2]*10" ez a D4-be beírja a tőle 1 sorral fentebb, de 2 oszloppal balra lévő cella 10-szeresét, tehát "=B3*10"-et
De mi az általános? Pl. A []-ben lévő szám mindig relatívat jelent? és hogy tudnám beírni pl. a B$3-at?
Köszönöm a tanácsokat![ Szerkesztve ]
-
Heno1974
csendes tag
Sziasztok!
SAP-ba szeretnék lekérdezést vba-val.
De mindig feladja az ablakot, hogy melyikbe szeretnék bejelentkezni. s nem tudom hol adjam meg neki.
sapConnection.Client = "200"
sapConnection.User = ""
apConnection.Password = ""
sapConnection.Language = "hu"[ Szerkesztve ]
-
kőbaltazár
tag
-
Fferi50
Topikgazda
válasz
k_miso #26619 üzenetére
Szia!
"Kézzel" egyszerűen kijelölsz egy meglevő formátumot és átírod arra a formára, amit szeretnél látni.
Makróval a numberformat tulajdonságot kell használni, ha beállítasz egy új formátumot, akkor az bekerül az egyéni formátumok közé.
Nézd meg a format függvényhez kapcsolódó magyarázatot is légy szíves.Üdv.
-
Margit néni
csendes tag
válasz
Delila_1 #26612 üzenetére
Kedves Delila_1 !
Ja, igen, sűrű volt a tegnap, éjfélkor álltam neki excelezni. :-D :-D
Nagyon rendes vagy!!!
Örülök, hogy ráleltem erre a fórumra, biztosan fogok még kérdésekkel jönni, képbe kell kerülnöm excel ügyben, mert szükségem van / lesz rá. De sajnos csak alapismereteim vannak.
Szerencsére érdekel a téma, szórakoztat, jól megmozgatja az agyamat. :-)
Jó lenne úgy érteni hozzá, mint Ti páran, itt a fórumon! (Irigy vagyok)
-
Fferi50
Topikgazda
válasz
k_miso #26616 üzenetére
Szia!
"Csak nem tudom, hogy hogyan lehet változót adni meg fájl névként."
Nem túl bonyolult:
dim masolt as workbook
fajlneve=forras.cells(sor,oszlop).value ' sor= az aktuális kimásolandó sor száma, oszlop= az egyedi értéket tartalmazó oszlop száma
set masolt=workbooks.add 'ennek az új munkafüzetnek az első munkalapja lesz aktív
'bemásolod a kívánt adatokat, utána
masolt.save filename:=fajlneve
masolt.closeArra viszont figyelj, hogy a fájlnévben lehetőleg ne legyenek magyar ékezetes karakterek, pontok,vesszők és egyéb olyan karakterek, amelyek "megbolondíthatják" a fájlkezelőket.
Üdv.
[ Szerkesztve ]
-
k_miso
tag
válasz
Fferi50 #26615 üzenetére
Szia!
Én is valami ilyesmiben gondolkodtam. Igazából a mentési nevet nem tudtam megoldani eddig. A forrás táblában van egy olyan oszlop, ami egyedi értéket tartalmaz, alkalmas lehetne fájl névnek is. Csak nem tudom, hogy hogyan lehet változót adni meg fájl névként.
Egyébként a sorok között nincs szünet. Ha mégis lenne, gondolom le lehetne szűrni egy adott mezőre, ahol mondjuk "1" érték van a használandó rekordon.miso
-
Fferi50
Topikgazda
válasz
k_miso #26614 üzenetére
Szia!
Ez véleményem szerint csak makróval oldható meg.
A makró végiglépked a sorokon, létrehoz egy új excel munkalapot(vagy fájlt?), annak az első sorába bemásolja az éppen aktuális sor értékét.
Ez megy mindaddig, amíg talál az adott sorban értéket.Azért annyit jó lenne támpontként tudni, hogy
a.) az adatsorok között lehetséges-e üres sor, ha igen,akkor azzal mit kell tenni
b.) a forrás munkafüzetben kell létrehozni új munkalapokat, vagy minden sort új munkafüzetbe kell elhelyezni (erre utalt a kérdőjeles rész fentebb). Ha ez utóbbi, akkor nyilván valamilyen (milyen?) néven el is kell menteni a keletkezett munkafüzetet.A fentiek ismeretében a makró egyszerű - a makrórögzítés funkcióval megcsinálsz egy munkalapot/füzetet, majd belefoglalod egy ciklusba a létrejött makrót, hogy annyiszor fusson le, ahány sora van a forráslapnak.
Üdv.
-
k_miso
tag
Sziasztok!
Ravasz fogós kérdésem van:
Adott egy Excell tábla, amiből több Excell táblát szeretnék létrehozni automatikusan úgy, hogy a forrás táblám egy rekordjának (sorának) különböző mező (oszlop) adatai kerülnének az új Excell tábla megfelelő helyére. A forrás tábla minden rekordja létrehozna automatikusan egy új Excell táblát.
Valami olyasmit szeretnék, amit a World körlevél funkciója csinál. Itt egy World dokumentumból annyi különböző dokumentum lesz, ahány rekordja van a csatolt Excell táblának.
A módszert már láttam működni, van is olyan Excell táblám, ami így jött létre.
Remélem sikerült érthetően megfogalmaznom a bajomat.miso
-
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
[ Szerkesztve ]
-
Margit néni
csendes tag
válasz
Delila_1 #26608 üzenetére
Kedves Delila_1 !
Pislogok és tátogok... Zseni vagy.
Elképzelésem sincs, hogyan működnek az általad írt képletek, mi mit jelent benne... de nem nyugszom, míg rá nem jövök. Ha beledöglök is. :-)
Mert frankón működik, bizony.(Annyi, hogy az első képleted két INDIREKT-es része közé beékeltem egy &" "& -t, hogy legyen szóköz a két rész között.)
Köszönöm szépen!!!!!!!!!
-
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é. -
Margit néni
csendes tag
Kiegészítés előz hsz-emhez:
A második függvénysorozatom az első sorozat melletti oszlopban halad lefelé, az elsővel párhuzamosan.
Úgy lenne a legjobb, ha a második oszlop függvényeiben szereplő C száma mindig megegyezne a szomszéd cellában lévő A és B számaival.
Azaz:
Ha első függvényben A1 és B1 van, akkor legyen a második függvényben C1
Ha első függvényben A11 és B11 van, akkor legyen a második függvényben C11
Ha első függvényben A21 és B21 van, akkor legyen a második függvényben C21 -
Margit néni
csendes tag
Sziasztok, gondban vagyok, nagyon megköszönöm, ha segít valaki!
A következő függvény-sorozatokat kellene pár lépésből megcsinálnom.
Celláról-cellára, lefelé haladva az oszlopban.
Lehúzással nem megy, erre már rájöttem...=ÖSSZEFŰZ(Munka1!A1;" ";Munka1!B1)
=ÖSSZEFŰZ(Munka1!A11;" ";Munka1!B11)
=ÖSSZEFŰZ(Munka1!A21;" ";Munka1!B21)
=ÖSSZEFŰZ(Munka1!A31;" ";Munka1!B31)
... s így tovább, az oszlop aljáig
A képletben szereplő A és B értékek minden egyes sorban 10-zel nőnek az előző sorhoz képest.Másik sorozat, ugyanez a szisztéma, csak más a függvény:
=Munka1C1
=Munka1C11
=Munka1C21
=Munka1C31
... ezt is a végtelenségig kéne (azaz az oszlop aljáig)Hogyan?
-
Fferi50
Topikgazda
válasz
ritterkrisz #26603 üzenetére
Szia!
Használd az Fkeres (Vlookup), vagy az Index függvényt az azonosak megtalálásához a másik lapon.
Üdv.
-
Fferi50
Topikgazda
Szia!
Próbáld így:
Worksheets("Monthly").Range(Worksheets("Monthly").Cells(2, REPORT_YEAR - 12),Worksheets("Monthly"). Cells(15, REPORT_YEAR))
Akkor ugyanis, ha nem írod be a "teljes címet", az aktív lapról veszi az információkat a program.
(Ilyeneket én is szívtam párszor...)A második eset azért hibás szerintem, mert nem deklaráltad előtte a TestRange változódat, ezért az variant típusú és nem range (bár range az amit hozzárendeltél).
Üdv.
[ Szerkesztve ]
-
ritterkrisz
tag
-
Louro
őstag
Ájjáj, nem bírok rájönni a megoldásra, így hát a jól bevált helyhez fordulok.
A képlet:
Range("AF5:AH5").Formula = "=IFERROR(HLOOKUP(AF2," & Worksheets("Monthly").Range(Cells(2, REPORT_YEAR - 12), Cells(15, REPORT_YEAR))& ",13,0),"""")"Annyit csinálna, hogy az AF5:AH5-be beilleszti a képletet, ami hiba esetén üresen hagyja a mezőt. Eredmény esetén egy másik munkalapról venné a keresett adatot.
Ha Range helyett beírom azt, hogy Monthly!$Y$2:$AJ$23, akkor lefut. De szeretném hosszabb távon alkalmassá tenné a függvényt.
Próbáltam úgy is, hogy előtte átváltottam a Monthly lapra, majd
Set TestRange = Range(Cells(2, REPORT_YEAR - 12), Cells(15, REPORT_YEAR))Range("AF5:AH5").Formula = "=IFERROR(HLOOKUP(AF2," & TestRange & ",13,0),"""")"
De így se megy
Második esetben ráadásul Type Mismatch. Pedig a TestRange is Range típusú.
Javaslat, ötlet, megoldás?
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Autós topik
- Végre bemutatkozott a Google Pixel 4a
- Le Mans Ultimate
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Path of Exile 2
- Akciókamerák
- Renault, Dacia topik
- AMD vs. INTEL vs. NVIDIA
- Samsung Galaxy S24 FE - Megrendelve!
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- További aktív témák...