-
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
-
Fferi50
Topikgazda
válasz
p5quser #53203 üzenetére
Szia!
"ha számként van tárolva a dátum"
Az Excel és a Google Sheet is számként tárolja alapból a dátumot - csak akkor nem szám, ha direkt szöveggé alakítják.
Ezért műxik velük a számként számolás.
A Google Sheet függvényeiben nézd meg, van-e Sorba.rendeznek megfelelő függvény. Majd én is ránézek.
Ezért fontos, hogy pontos legyen a kérdés!
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
p5quser #53200 üzenetére
Szia!
A tartományt az A oszlopot (dátumokat) figyelembe véve emelkedő sorrendbe kell rendezned. akkor az E1 cella képlete:=INDEX($B$1:$B$10;HAHIBA(HOL.VAN(D1;$A$1:$A$10;0)-1;HOL.VAN(D1;$A$1:$A$10;1)))
A képlet a D1 cellában levő dátum előtt az A oszlopban levő naphoz tartozó értéket fogja visszaadni.
Üdv. -
Mutt
senior tag
válasz
p5quser #52694 üzenetére
Szia,
Röviden: igen, a "col" egy változó (column-t rövidítettem).
Hosszan:
1) A képlet alapja a BYCOL függvény, amely egy tartománynak (első paraméter) az oszlopain egymás után lefuttatja a második paraméterben megadott függvényt. Az eredmény egy tömb lesz, legalább annyi elemmel ahány oszlop van.
2) A LAMBDA függvénnyel pedig saját függvényeket lehet létrehozni. Az első paraméter(ek) változók, az utolsó pedig az eredményt kiszámoló képlet. pl. LAMBDA(a,b,a+b) összeadja a két inputot. LAMBDA-t többnyire a névkezelőben szoktunk használni, és onnan a munkafüzetben bárhol el lehet érni.
Ebben az esetben a BYCOL függvény a LAMBA első változójának átadja az oszlop értékeit. A függvény pedig megnézi, hogy az adott oszlopban megtalálható-e a szöveg vagy sem. Az eredmény 0 vagy pozítiv szám lesz.
3) A FILTER függvénnyel azon mezők maradnak meg, ahol egy pozítiv szám volt az eredmény.
4) A végén a több lehetséges eredményt összefűzük egy mezőbe.üdv
-
Mutt
senior tag
válasz
p5quser #52683 üzenetére
Szia,
Kaptál már választ, de én is bedobok egy csak friss Excelben műkődő változatot.
F2-ben a kereső szó és G2-ben a képlet:
=TEXTJOIN("; ";TRUE;FILTER($A$1:$D$1;BYCOL($A$2:$D$4;LAMBDA(col;SUM(--ISNUMBER(SEARCH("*"&F2&"*";col)))))))Google Sheets-ben ugyanezen függvények léteznek, szóval elméletben ott is műkődhet.
üdv
-
Fferi50
Topikgazda
válasz
p5quser #52686 üzenetére
Szia!
Talán próbáld meg ezt:
Először az oszlopokat összefűzni - nem kell fizikailag, csak képlettel -, ebben megkeresni a szövegtöredéket, hányadik sorban van.
Majd ebben a sorban ismét megkeresni, mostmár egyedül az oszlopot. Végül az első sorban a konkrét értéket.Itt láthatod részleteiben a képleteket.
Természetesen ez összevonható egy cellába is, kicsit hosszú lesz.
Üdv. -
Fferi50
Topikgazda
válasz
p5quser #52683 üzenetére
Szia!
Többoszlopos tartományban keresésre én nem emlékszem Excelben sem.
Szerintem az INDEX - Match páros műxik G.sheetben is. Viszont minden oszlopra külön kell a keresést megadnod.
A keresésben használhatod a wildcard karaktereket * (csillag) akárhány karakter ? (kérdőjel) 1 karakter.
Pl. "*uda*" az uda részletet tartalmazó értéket találja meg. Pontos egyezést kell keresni a Match függvénnyel.
Üdv. -
föccer
nagyúr
válasz
p5quser #51780 üzenetére
Meg lehet fogalmazni az adatérvényesítésnél úgy a listát, hogy dinamikusan töltse be aza datokat egy tartományból. Ehhez használd az "INDIREKT() függvényt a Forrás megadásánál. pl
=INDIREKT("seged!$A$2:$A"&seged!$C$1+1)
Itt a seged munkafüzet C1 cellájában egy darab2 függvénnyel megszámoltatom, hogy mennyi eleme van a segedA2-től induló tömbben. Így ha a tömb elemei bővűlnek, dinamikusan bővíti a lista elemeit is. Az A2 tömbbe meg szűrővel, egyedivel sorba rendezéssel lehet manipulálni a listába betöltendő elemeket.üdv, fg
-
Fferi50
Topikgazda
válasz
p5quser #51320 üzenetére
Szia!
Szerintem egyszerűbb módon is meg lehetne oldani a lista szűrését. Most nincs túl sok időm, csináltam egy nagyon egyszerű példát, ahol a betűk beírásával folyamatosan változik a kiválasztott érték és megjelenik a textboxban.
[link]
Csak indítsd el a Userform1-et.
Üdv.
Ps: A Data.hu egy darabig ellenőrizgeti a vírusügyet, csak később lesz elérhető a letöltés. -
Mutt
senior tag
válasz
p5quser #51315 üzenetére
Szia,
Ezt hoztam össze. A KeyDown-al nem, de a KeyUp-al megy amit akarsz.
Annyit kacifántoztam, hogy csak az első UP esetén ugrik a legutolsó elemre, hogy lehessen felfelé pörgetni a listát. Ehhez kell egy globális változó, bKeyUp nálam.Dim bKeyUp As Boolean 'igaz ha utoljára felfelé nyíl volt használva
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With ComboBox1
If KeyCode = vbKeyUp Then
'ha már nyomtak felfelé nyilat akkor kiléphetünk innen
If bKeyUp Then Exit Sub
'ha nem nyomtak akkor ugrunk a végére és beállítjuk hogy volt már felfelé nyíl használva
.ListIndex = .ListCount - 1
bKeyUp = True
Else
'ha más billentyüt nyomtak akkor elfelejtük hogy volt már felfelé nyíl nyomva
bKeyUp = False
End If
End With
End Sub
Private Sub UserForm_Initialize()
bKeyUp = False
With ComboBox1
.AddItem "Géza"
.AddItem "Paula"
.AddItem "Kriszta"
.AddItem "Aladár"
.AddItem "Blöki"
.AddItem "Maffia"
.AddItem "Mz/X"
.AddItem "Máris szomszéd"
.ListIndex = 0
End With
End Subüdv
-
Fferi50
Topikgazda
-
-
válasz
p5quser #49061 üzenetére
"Egy filter függvény által kinyert sort..."
Milyen filter függvényről van szó?Amúgy sima szűrt sorból csak 2 lépésben lehet transzponálni, elsőre a szűrt sorokból kijelölöd a kívánt tartományt, simán copy-paste-l valahova beilleszteted, másodikra meg ezt a beillesztett tartományt tudod már transzponálni.
-
Fferi50
Topikgazda
válasz
p5quser #46420 üzenetére
Szia!
A Select Case pont azért van, hogy ne kelljen bonyolult és hosszú if szerkezeteket beágyazni.
Nyilván több lehetőség esetén több ága lesz a Case-nek (is).
Az egyes ágakon belül lehet feltételeket vizsgálni, pl.:Select Case szam
Case 2,3
if neve=juszuf or neve=huan (or neve=wong) then
Case Else
End Select
(persze a neveket ne felejtsd el változóba vagy idézőjelbe tenni.... )
Üdv. -
Fferi50
Topikgazda
válasz
p5quser #46266 üzenetére
Szia!
Nagyon sajnálom, figyelmetlenül írtam be a kódot:tbtomb(1) =ActiveSheet.Textbox1 helyett
Set tbtomb(1)=ActiveSheet.Textbox1
...
Így fog a Textbox objektum bekerülni a tömbbe.
A SendKeys-sel óvatosan kell bánni, mert abban az ablakban érvényesül, amelyik éppen aktív.
Üdv. -
Fferi50
Topikgazda
válasz
p5quser #46249 üzenetére
Szia!
Az OleObject helpje azt mondja, hogy csak névvel lehet rá hivatkozni...
itt olvashatod
Ezért sajnos meg kell kerülni a problémát, pl. a következőképpen:
A textboxokat beteszed egy tömbbe:Dim tbtomb(x) x=a textboxok száma
tbtomb(1)=Activesheet.Textbox1
tbtomb(2)=Activesheet.Textbox2
és így tovább.
Ezután a CheckBox számát használhatod indexnek:
With tbtomb(cbi)
.SelStart = 0 stb
End With
Nekem úgy tűnik, másként nem megy - mivel az objektum tallózóban a munkalapon levő textboxok önálló objektumként jelennek meg.
Üdv. -
Mutt
senior tag
válasz
p5quser #46249 üzenetére
Szia,
Set -el próbáld meg a hivatkozást.
For Each cb In ActiveSheet.OLEObjects
If TypeName(cb.Object) = "CheckBox" And cb.Object.Value = True Then
Set cbi = ActiveSheet.OLEObjects(Replace(cb.Name, "CheckBox", "TextBox"))
Debug.Print cbi.Object.Text
Set cbi = Nothing
End If
Next cbüdv
-
Delila_1
veterán
válasz
p5quser #45975 üzenetére
A comboxban több oszlop adatait is megadhatod.
Nézd meg az alsó képen a beállításokat. A ColumnWidth tulajdonságnál pontokban adhatod meg az egyes oszlopok szélességét. A B és C oszlopnál ezt 0-ra állítottam.
A RowSource lehet fix, mint a képen, vagy az alsó sor változóval, ahogy tegnap írtam.
Próbáld ki, hogy a ColumnHeads értéket False-ra állítod, a területet A1-gyel kezdődőre.Szerk.: a RowSource értékét az inicializálásban add meg, hogy mindig az aktuális alsó sorig mutassa a táblázatodat, a többi fixen megadható a formon.
-
Delila_1
veterán
válasz
p5quser #45973 üzenetére
Szia!
Teljesen mást javaslok.
A helyedben a kérdéses oszlopot másolnám, az új helyen alkalmaznám az ismétlődések eltávolítását. Legyen a példa szerint ez az Adatok lap A oszlopa.
Itt megkeresném az alsó sort:
also=Sheets("Adatok").Range("A" & Rows.Count).End(xlUp).Row
Ezt a tartományt rendelném a combobox-hoz.
Combobox1.RowSource="Adatok!A1:A" & also
Ha címsor is van, akkor A1 helyett A2-től az alsó sorig.
A másolást és az ismétlődések eltávolítását makrórögzítéssel is beviheted. -
Fferi50
Topikgazda
válasz
p5quser #45839 üzenetére
Szia!
Nálam ez a jelenség (2016 Excel) nem jelentkezik....
Ellenben a két munkalapon a Combo értéke egy pillanatra megváltozik, ha utána belekattintok a Textbox-ba.
Ezt úgy lehet elkerülni, ha a Textbox nullázása után még egy sort beírsz, pl.
Textbox1.Activate
Ekkor átkerül a fókusz ide és utána már nem "ugrál" a Combo felirata.
A jelenség magyarázata persze nincs meg.
Remélem, ez nálad is segít.
Üdv. -
Fferi50
Topikgazda
válasz
p5quser #45603 üzenetére
Szia!
A tömböt értékadással kapod meg.
Pl.Dim atomb()
atomb=Range("A1:F3").Value
'Ezután végigmész a tömb elemein sor vagy oszlop szerint. (Az első index a sor, a második az oszlop.)
'Aminek van értéke, azt beirod a soron következő cellába, az üreset pedig hagyod békén.
Dim i As Integer, j As Integer, k As Integer, m as integer
k=10:m=1 ' a 10 sor A oszlopától kezdődik a másolás
For i=1 to Ubound(atomb,1)
For j=1 to Ubound(atomb,2)
If atomb(i,j)<>"" Then
Cells(k,m).Value=atomb(i,j)
k=k+1
End If
Next j
k = k + 1: m = 1
Next i
Üdv. -
Mutt
senior tag
válasz
p5quser #44115 üzenetére
Szia,
A Split egy eredménytömböt próbál létrehozni, aminek az elemszáma a megtalált elválasztó karakterek száma alapján változik. Ha nem találja meg a karaktert, akkor 1 elemű lesz a tömb, a bemeneti értékkel az első elemben.
A tömb elemszámát az UBOUND() függvény adja meg.
Mielőtt a 3-ik elemet keresnéd meg kell nézned, hogy van-e egyáltalán?If UBound(spl) > 2 then
... 3-ik elemes keresésed
End ifHa jól értelmezem az eredeti felvetésedet, akkor ez a kód jobb eredményt fog adni mint a mostani.
Sub Kereses()
Dim rngSearch As Range 'ez a B oszlop
Dim txSearch As Range 'ez a B oszlop éppen vizsgált cellája lesz
Dim arrWhat() 'ez a G oszlop
Dim txWhat As Variant 'a splittel ide szedjük szét fenti cella tartalmát
Dim match As Long 'találatok számolása
Dim bestmatch As Long 'legtöbb találat
Dim bestWhat As Long 'legtöbb találatot adó keresés pozíciója
Dim i As Long
Dim j As Long
With ActiveSheet
'memóriában tárolt tömbe töltjük a keresendõ kifejezések listáját
'Transpose 1-es index-szel induló tömböt hoz létre
arrWhat = Application.Transpose(.Range("G2:G180"))
Set rngSearch = .Range("B1:B" & .Range("B1").End(xlDown).Row)
For Each txSearch In rngSearch
bestmatch = 0
bestWhat = 0
For i = 1 To UBound(arrWhat)
'keresendõ szavak létrehozása
txWhat = Split(arrWhat(i), " ")
If IsArray(txWhat) Then
match = 0
'Split mindig 0-ás index-szel hozza létre a tömböt
For j = 0 To UBound(txWhat)
match = match - (InStr(1, UCase(txSearch), UCase(txWhat(j))) > 0)
Next j
'ha találtunk több egyezést a korábbiaknál, akkor jegyezzük meg
If match > bestmatch Then
bestmatch = match
bestWhat = i
End If
End If
Next i
'mielõtt új cellára mennénk a C-D oszlopban írjuk ki hogy mi a legjobb egyezésünk
If bestWhat > 0 Then
txSearch.Offset(, 1) = bestmatch
txSearch.Offset(, 2) = arrWhat(bestWhat)
End If
Next txSearch
End With
End Subüdv
-
Delila_1
veterán
válasz
p5quser #43916 üzenetére
Nem kell a 11-es címke, hiszen nem irányít ide a makródban semmi.
A képletek beírásaIf ComboBox1 = "valami" Then
Range("D2:D31").FormulaR1C1 = _
"=(IFERROR(VLOOKUP(RC[-3],cikkek!C[-3]:C[5],R1C7,0),0))*R5C8"
Else
Range("D2:D31").FormulaR1C1 = _
"=(IFERROR(VLOOKUP(RC[-3],cikkek!C[-3]:C[5],R1C7,0),0))*R5C8*1.27"
End If -
Fferi50
Topikgazda
válasz
p5quser #40636 üzenetére
Szia!
Még egy ötlet, esetleg ennek is hasznát veheted:
A keresésnél (Fkeres, Hol.Van függvény) lehet használni pl. a * (csillag) joker karaktert, ami tetszőleges karaktersorozatot helyettesít:
"*tart*" olyan cellát keres, amelyben megtalálható a tart szótöredék
"tart*" olyan cellát keres, amelyik tart szövegrészlettel kezdődik
"*tart" pedig olyan cellát keres, ahol tart a szöveg vége
Ebben az esetben nem számít, hány karaterből vagy hány szóból áll a megtalálandó cellában a szöveg.Pl. Fkeres(Bal("Tartalék akkumlátor mobiltelefonhoz" ;4) & "*";Másik tábla;1;0) visszaadja az első olyan találatot, amelyik Tart -tal kezdődik. Fontos a 4. paraméter 0 (HAMIS) értéke!
Üdv.
-
Delila_1
veterán
válasz
p5quser #40640 üzenetére
Csak úgy ne járj, mint egykor a főnököm.
Egy hosszú jegyzőkönyvben sokszor le kellett írnom a zöld/sárga földelő vezeték szöveget. Nosza, automatikus javításba tettem, zs-ként. A főnöknek is átküldtem. Pár nap múlva kétségbe esve jött, hogy megbolondult nála az Excel. Mikor rövidítve leírja az egyik dolgozó nevét – Kovács Zsigmond helyett Kovács Zs – átíródik Kovács zöld/sárga földelő vezetékre. Eszerint a fájlom nála is bevezette az automatikus javítást.
-
Delila_1
veterán
válasz
p5quser #40636 üzenetére
Jobban olvasható, ha nem off-ban írod, és ide is tartozik. Kijavítottam.
A Beállítások | Nyelvi ellenőrzés | Automatikus javítás | Automatikus javítás fülön beállíthatod a Módosítandó szöveget (pl. Tartal), a Jó szöveghez pedig beírod a teljeset (Tartalék akkumulátor mobiltelefonhoz). Beírja a Tartal szöveget, másik cellába lépve átíródik a "rendes" hosszúra. Kis- és nagybetűt figyeli!
Szerk.:
Ne adj módosítandónak értelmes szöveget, mert ha csak azt a szót akarod meghagyni, akkor is átírja a megadott jó szövegként. -
Pakliman
tag
válasz
p5quser #40636 üzenetére
Sajnos várni kell a mesterséges intelligenciára
De addig is - egy kis plusz munkával - "tanítható" adatbázisból is dolgozhatsz.
Létrehozol egy munkafüzetet, amiben 2 oszlopot kell kezelned.
A 1. oszlopban lesznek a különböző felhasználók által használt kifejezések
A 2. oszlopba melléjük írod Te, hogy az mi is akar lenni (vagy Te mit szeretnél látni a zagyvaságok helyett)
Ezután az FKERES függvénnyel ebben a táblában kikeresed a kapott szöveget és megkapod a kívántat.
Ha hibát ad vissza, akkor egyszerűen csak kibővíted az új jövevénnyel.
Persze, sosem lesz tökéletes, de egyre kevesebb lesz a #HIÁNYZIK eredmény.Kicsit nehezebb feladat rávenni a kuncsaftokat, hogy egységes szövegeket használjanak.
-
Pakliman
tag
válasz
p5quser #40632 üzenetére
Szia!
A
Dim stdb As Workbook
Dim stnm As Stringsorokat töröld a Workbook_Open metódusból (ha még nem tetted meg), mert különben kizárólag ezek a HELYBEN ÉRVÉNYES változók veszik fel az értékeket (ez miatt hasal el a program is, mert ott nincs értéke az stnm-nek!).
Private Sub Workbook_Open()
stnm = Application.GetOpenFilename
If stnm <> "" Then
Set stdb = Workbooks.Open(stnm)
End If
End SubA
Workbooks(stnm).Sheets(1).Range("A1:B" & Rows.Count).AutoFilter field:=2, Criteria1:="*" & TextBox2.Value & "*"
helyett így már használhatod astdb.Sheets(1).Range("A1:B" & Rows.Count).AutoFilter field:=2, Criteria1:="*" & TextBox2.Value & "*"
formát! -
Fferi50
Topikgazda
válasz
p5quser #40632 üzenetére
Szia!
"Ha az stnm helyére beírom idézőjelekkel az adat file teljes nevét kiterjesztéssel, teszi a dolgát"
Mit értesz teljes név alatt? Ha csak a kiterjesztéssel bővített fájlnevet, akkor rendben van. Ha viszont az elérési utat (Path) is beleérted, akkor nem működhet rendesen.
Megnyitott munkafüzetre a fájlnévvel (Name) lehet/kell hivatkozni, igen, kiterjesztéssel együtt.
Viszont itt:If stnm <> "" Then
Workbooks.Open stnm
End IfAz stnm a Path-t is fogja tartalmazni, ezért jelentkezik hiba az adott sorban.
Ebből az alábbi sorral kaphatod meg a fájl nevét:fnev=Mid(stnm,InStrRev(stnm,"\")+1)
Még egy megjegyzés: Amikor megnyitod az stnm nevű munkafüzetet, az lesz az aktív munkafüzet, tehát a nevét az ActiveWorkbook.Name tulajdonsággal is lekérdezheted.
Üdv.
-
Pakliman
tag
válasz
p5quser #40486 üzenetére
A Workbook_Open metódus csakis a munkafüzet megnyitásakor fut le, vagyis az értékadás is akkor történik meg.
Próbáld meg először azt, hogy mentéssel bezárod a munkafüzetet majd újra megnyitod.Ha azt szeretnéd, hogy bármikor rendelkezésre álljanak az új hivatkozások, akkor egy általános modulban kellene létrehozni egy pl. Init nevű eljárást és abba beírni az értékadást.
Később, amikor szükség van az azonosítókra, a kódban egyszerűen csak meghívod az Init eljárást. -
Pakliman
tag
válasz
p5quser #40480 üzenetére
Szia!
A legegyszerűbb megoldás (szerintem), ha a munkalapokat átnevezed:
Amint láthatod, egy munkalapnak 2 "Neve" van, VBA-ban mindkettő használható, de más módon:
1.: egy tulajdonképpeni "belső" azonosító, közvetlenül lehet hivatkozni rá:Munka3.Range("A1")
2.: ez látszik az Excelben a lapfülön, szövegként hivatkozhatunk rá:Worksheets("Munkaóra").Range("A1")
A 2. változatnál egy általános modulban deklarálni kell a szükséges "változókat"Public ws1 As Worksheet
Public ml3 As Worksheet
Public Össz As Worksheet, majd a Thisworkbook modulban értéket adni neki(k):
pl.:Private Sub Workbook_Open()
Set ws1 = Worksheets("Táblázat")
Set ml3 = Worksheets("Munkaóra")
Set Össz = Worksheets("Segéd")
End Sub -
Mutt
senior tag
válasz
p5quser #40270 üzenetére
Szia,
Előbb próbáld ki ezt a cserét:
Selection.Value = Application.InputBox("Darabszám", Type:=1)
Ha ez nem jó, akkor a Selection.Value helyébe tedd ezt:
vresult = InputBox("Darabszám")
If InStr(1, vresult, ",") Then
Selection.Value = CDbl(Left(vresult, InStr(1, vresult, ",") - 1) & Application.DecimalSeparator & Right(vresult, Len(vresult) - InStr(1, vresult, ",")))
Else
Selection.Value = vresult
End Ifüdv
-
Fferi50
Topikgazda
válasz
p5quser #38727 üzenetére
Szia!
Nem hagyott engem sem nyugodni a dolog és kiókumuláltam egy olyan megoldást, ami az eredeti elképzelésedhez hasonlít:
Lépések:
1. Az E1 cellába beírtam a Ma fejlécet. Az E oszlop minden sorában a képlet =MA()
2. A Diagramot kiegészítettem az E oszloppal, mint új adatsorral. Legyen a neve MA
3. A MA adatsort kijelöltem - adatsor diagramtípusának megváltoztatása - csoportosított sáv - másodlagos tengely bejelölve.
4. A másodlagos tengely (ami felül jelent meg a diagramon) minimum - maximum értékeit hozzáigazítottam az alsó tengely értékeihez, majd a feliratokat eltávolítottam.
5. Most jön az igazi trükk: A MA adatsor kitöltésénél színátmenetest jelöltem be. Az első szín fehér. Végponti pozíciója 98%, áttetszőség 100%. A második szín piros.
6. Hátravan még a MA adatsor pozicionálása: Az adatsor beállításainál az Átfedő adatsorok 100 %, A térköz szélessége 0 %.
A végeredmény:Üdv.
-
Mutt
senior tag
válasz
p5quser #38725 üzenetére
Szia,
Oszlop diagram (stacked bar chart) esetén nem megy az általam javasolt megoldás, de ha pont diagramot használsz akkor jó lesz. Ezen tutorial alapján menni tudsz Gantt-diagramot másik módon létrehozni és ötvözni a korábban már említett trükköt.
Az y-tengely felirata lehet zavaró, mert ott sorszámokat fogsz látni, de adatfeliratok segítségével megoldható hogy az eredeti szöveg látszódjon.
üdv
-
Mutt
senior tag
válasz
p5quser #38721 üzenetére
Szia,
1. Felveszel egy új adatsort, aminek csak egy eleme, az aktuális napot tartalmazó cella az értéke.
2. Az új adatsort másodlagos tengelyhez rendeled, a tengelynek minimuma 0, maximuma 1 legyen.
3. Az új adatsorhoz engedélyezed a hibasávokat.
4. A vízszintes hibasáv törölhető, a függőlegest formázni kell.
Irány: negatív, végpont stílusa: nyílt, hiba mértéke: rögzített, aminek 1 az értéke (mivel ekkora a másodlagos tengely). Válassz színt és legyen a vonal kicsit vastagabb.
5. Az új adatsort jelöld ki és a jelzőpontnak ne legyen kitöltése, körvonala.
6. Rejtsd el a másodlagos tengelyt.üdv
-
Mutt
senior tag
válasz
p5quser #38070 üzenetére
Szia,
Az EVALUATE Excel 4.0-ás függvény tud neked ebben segíteni, de csak trükkösen hívható elő.
Ha az adatok az A oszlopban vannak, akkor hozz létre a névkezelőben egy változót, aminek a képlete ez:=EVALUATE($A1)
Ahogy látható csak az A-oszlop lesz rögzítve, a sor változik.
Ezek után ahova beírod a változód nevét oda a sor első oszlopának értékét ki fogja számolni.
Alternatív megoldás a Power Query használata.
Itt is igazából a fenti függvényt lehet használni, de a neve Expression.Evaluate.
üdv
-
ny.janos
tag
válasz
p5quser #38078 üzenetére
Az itt segítséget nyújtó fórumtársak túl profik az excelhez hozzám képest, ami ebben az esetben pont nekem jelentett előnyt.
(Mivel ők kizárólag excelben gondolkodtak, legalábbis nekem úgy tűnt.)
A néminemű tudatlanságom okán viszonylag sokszor szoktam az excel megoldásaimhoz jegyzetttömböt és word-öt is használni. Így adta magát a dolog, hogy ez esetben is kipróbáljam.Kár, hogy csak azt követően sikerült megírnom a megoldást, hogy már manuálisan végigmódosítgattad a fájlodat.
-
Fferi50
Topikgazda
válasz
p5quser #38075 üzenetére
Szia!
Úgy tűnik, ilyen több műveletet tartalmazó képletet csak egy módon tudsz kiszámoltatni (bár erre igazán lehet azt mondani, hogy pofonegyszerű
):
A kifejezést tartalmazó cellára nyomsz egy F2-t majd eléírod az = jelet.
Persze ez többszáz cellánál elég időigényes. De sajnos makróval sem találtam jobb megoldást.Üdv.
-
Fferi50
Topikgazda
válasz
p5quser #37673 üzenetére
Szia!
'Mint írtam, van működő kód, csak nem értem ezt az előjel váltást, és érdekelt, hogy mi nyűgje lehet.'
Ezek szerint amit leírtál kód, az mégsem működik megfelelően. Sajnos így látatlanban nem tudom megmondani, mi lehet a probléma. A kódnak elvileg jól kellene működnie.
Talán elküldhetnéd privátban.
Üdv.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
p5quser #37629 üzenetére
Sorban megnyitod egy mappa adatait. Az egyes füzetek megnyitása után hívd meg ezt a makrót.
Sub Kigyujtes()
'B oszlopban szűrünk az "elszámolás" szóra.
'A szűrt adatok közül a szűrés előtti, a szűrt oszlop, és a szűrés utáni oszlop
'adatait másoljuk az Összesítés lap első üres sorába, a lap B oszlopától kezdve.
'Az Összesítő A oszlopába beírjuk a lap nevét, ahonnan másoltunk. Megszüntetjük a szűrést.
'Az Összesítő az utolsó lap a füzetben.
Dim lap As Integer, innen As Long, eddig As Long, WSO As Worksheet
Set WSO = Sheets("Összesítés")
Application.ScreenUpdating = False
For lap = 1 To Sheets.Count - 1
Sheets(lap).Activate
Range("$A:$F").AutoFilter Field:=2, Criteria1:="elszámolás"
Range(Cells(2, 1), Cells(10000, 3)).SpecialCells(xlCellTypeVisible).Copy
innen = WSO.Range("B" & Rows.Count).End(xlUp).Row + 1
WSO.Range("B" & innen).PasteSpecial xlPasteValues
eddig = WSO.Range("B" & Rows.Count).End(xlUp).Row
WSO.Range("A" & innen & ":A" & eddig) = ActiveSheet.Name
Range("$A:$F").AutoFilter Field:=2
Next
WSO.Activate: Range("A2").Select
Application.ScreenUpdating = True
End SubBiztosan hozzá tudod idomítani a saját igényeidhez.
-
Delila_1
veterán
válasz
p5quser #36979 üzenetére
Lehet, hogy látszatra egyforma a két érték, de a keresett érték számként-, a 11. oszlopban pedig szövegként van megadva.
Ha mindegyik szöveg, gyakori hiba, hogy az egyik tartalmaz (többnyire a végén) egy szóközt. A TRIM függvénnyel levághatod a szöveg elején, és végén lévő szóközöket egy új oszlopban a keresés előtt, majd értékként beilleszted az eredeti helyére.
-
Delila_1
veterán
válasz
p5quser #36959 üzenetére
A laphoz rendelt gomb csak a saját lapján tud dolgozni. Helyette tegyél a lapra (mondjuk az elsőre) egy alakzatot, pl. a lekerekített téglalapot.
Modulba másold be a makrót:
Sub Szures()
Dim lap As Integer
Application.ScreenUpdating = False
For lap = 2 To Sheets.Count
Sheets(lap).Select
ActiveSheet.Range("$A$1:$N$330").AutoFilter Field:=11, Criteria1:=">1"
ActiveSheet.AutoFilter.Range.Select
Selection.Interior.Color = 5296274
' ActiveSheet.Range("$A$1:$N$330").AutoFilter Field:=11 'összes sor mutatása
Next
' Sheets(1).Select 'első lapra állás
Application.ScreenUpdating = True
End SubAz alakzathoz rendeld hozzá a Szures makrót. Ez a másodiktól az utolsó lapig halad, és mindenhol végrehajtja a szűrést, színezést.
Nézd meg, kell-e a két sor a makróban, amikhez megjegyzést fűztem.
-
Pakliman
tag
válasz
p5quser #36959 üzenetére
Szia!
Nem próbáltam ki, mert dokinál vagyok, de mennie kellene:Sub CommandButton2_Click()
'Kijelölés
Dim ws as worksheet
Dim act as worksheet
Set act=activesheet
For each ws in worksheets
If not ws is act then
Ws.activate
Ws.Range("$A$1:$N$330").AutoFilter Field:=11, Criteria1:=">1", _
Operator:=xlAnd
Ws.AutoFilter.Range.Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Ws.ShowAllData
Ws.Range("$A$1:$N$330").AutoFilter Field:=11, Criteria1:="<-1", _
Operator:=xlAnd
Ws.AutoFilter.Range.Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Ws.ShowAllData
Ws.Range("$A$1:$N$316").AutoFilter Field:=11, Criteria1:=">1", _
Operator:=xlOr, Criteria2:="<-1"
Endif
Next ws
End Sub
(Baromi nehéz telefonon írni)
-
Delila_1
veterán
-
Fferi50
Topikgazda
válasz
p5quser #36929 üzenetére
Szia!
Meg van nyitva a célfájlod.
Megnyitod a forrásfájlt. Munkalap fülön jobb egérgomb - másolás vagy áthelyezés - kiválasztod a célfájlt - legyen másolat. Forrásfájl bezárás.
Ezt ismétled, mígnem elfogynak a forrás fájlok.
Persze lehet rá makrót is írni - sőt felvenni is. Ha a célfájlba valahova beírod a forrásfájlok neveit, akkor ciklusban sorban meg lehet nyitni azokat, átmásolni a munkalapot és bezárni.Üdv.
PS.
(valamikor hajdanán volt olyan DOS parancs, amivel több fájlt össze lehetett másolni, nem tudom, Windows támogat-e ilyet, azt pedig végképp nem, hogy a legeslegeslegújabb fájlformátumban egyáltalán lehetséges-e hasonló - de szerintem nem)
Új hozzászólás Aktív témák
Hirdetés
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Antivírus szoftverek, VPN
- Vírusirtó, Antivirus, VPN kulcsok
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest