- Felháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasni
- A luxusmárkáknak kell a bitcoin, az USA jegybankjának nem
- Letiltja az USA a politikusokat a telefonhívásokról és szöveges üzenetekről
- Nagy áttörés jön a napelemek piacán, nem kell annyi hely a paneleknek
- Belenyúlt az USA az Epic Games igazgatótanácsába, nyomoz az NVIDIA
-
IT café
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
-
ny.janos
tag
válasz bara17 #42257 üzenetére
Szia!
Tömbképletes megoldások nekem ritkán ugranak be (nem is olyan rég volt, mikor végre sikerült felfognom a lényegüket). A te esetedben attól függően, hogy mire van valójában szükséged és hogyan épül fel az adathalmazod, amiben keresel nem vagyok biztos benne, hogy tökéletesen működni fog egy ilyen megoldás.
A kérdésedet én úgy értelmeztem, hogy mindenképpen a B oszlopban szereplő keresett dátum utáni következő dátumot keressük, feltéve, hogy C oszlopban ott 1-es szerepel. Mind a te, mind Mutt tömbképletes megoldására igaz az, hogy amennyiben a B oszlopban
>=
relációra keresel, úgy magát a keresett értéket (nem pedig az azt követő elemet) fogod visszakapni a táblázatodban azokban az esetekben, ha a keresett dátum mellett a C oszlopban 1-es szerepel. Ha a relációt>
-ra cseréled, az pedig azzal jár, hogy amennyiben az adathalmazodban egy dátum többször is előfordul közvetlen egymás alatt, úgy szintén nem azt kapod amit szerettél volna, hanem mindenképpen minimum 1 nappal későbbi dátumot.Az alábbi képeken látod az általam vélt működésbeli hiányosságot. Kék háttérrel jelöltem a keresett értéket, zölddel pedig amely értéket eredményként kapni kellene.
-
Mutt
senior tag
válasz bara17 #42246 üzenetére
Szia,
Excel 2016-tól felfelé van MINHA függvény, amelyet használj így:
=MINHA(B:B;B:B;">"&F2;C:C;1)
ahol B oszlop a dátumos oszlop, C a 0/1-et taratalmazó oszlop és F2 a cella ahol van a keresési érték.
Régebbi Excelben pedig egy tömbfüggvény tud segíteni, ezt Ctrl+Shift+Enter-rel kell lezárni.
=MIN(HA((B1:B22>F2)*(C1:C22=1)>0;B1:B22;2^99))
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
ny.janos
tag
válasz bara17 #42246 üzenetére
Szia!
Egy lehetséges megoldás, hogy felveszel egy segédoszlopot, ahol a második oszlopban szereplő 1-eseket és 0-kat összesíted. Attól függően, hogy a segédoszlopodat hova szúrod be vagy az FKERES és INDEX - HOL.VAN párossal meg tudod találni a kívánt eredményt. Előbb megkeresed az adott dátumhoz tartozó értéket a segédoszlopodban, majd a segédoszlopban ettől eggyel magasabb értékhez keresed vissza a hozzá tartozó dátumot.
D1 cella képlete:
=SZUM($C$1:C1)
H4 cella képlete:
=INDEX(B1:B20;HOL.VAN(INDEX(D1:D20;HOL.VAN(H3;B1:B20;0))+1;D1:D20;0))
-
Fferi50
Topikgazda
-
ny.janos
tag
válasz bara17 #42015 üzenetére
A Ctrl+L billentyűparancs már a régebbi verziókban is a táblázat létrehozása párbeszédpanelt nyitotta meg. Amit írsz az egy makró lehetett. Billentyűparancs módosítása nem hiszem, hogy lehetséges.
Makró helyett: ha van olyan parancs az excelben, ami az aktuális cella feletti cella tartalmát másolja (én nem tudok ilyenről), akkor azt a parancsot felveheted a gyorselérési eszköztárra. A gyorselérési eszköztárra felvett parancsok közül az első tíznek a gyorsbillentyű kombinációja: Alt+1, Alt+2 stb.
-
föccer
nagyúr
válasz bara17 #31038 üzenetére
Ha egyesítessz 2 cellát, akkor csak 1 cella tartalom lehet, lévén 1 cella lesz, nem kettő. Bár nem értem, hogy pontosan mit szeretnél... Ha az a probléma, hogy a "húzott" képlet másolásban automatikusan módosulnak a cellahivatkozások, akkor használd a $ jelet.
üdv, föccer
Építésztechnikus. Építőmérnök. Ingatlan adás-vétel vevő oldali támogatása. Mérnök tanácsadás, felújításhoz, átépítéshez. Excel feladatok megoldása. Lézergravírozás. Mindent IS csinálok: www.jatekosfejlodes.hu
-
azopi74
addikt
válasz bara17 #27438 üzenetére
Bocsi, de ezt a képletes módszert én javasoltam, nem lappy. Ő mást javasolt
és lappy módszere nem működik? mert az még ennél is egyszerűbb....
Most gépközelben vagyok,megnéztem, és igazunk volt, tényleg be lehet képletezés nélkül is állítani (legalábbis 2010-től felfelé) , hogy a legkisebb vagy legnagyobb értéket adott színűre színezzeÍgy :
[ Szerkesztve ]
-
azopi74
addikt
válasz bara17 #27435 üzenetére
Feltételes formázással lehet, képlettel (MIN függvény)...
De talán van rá beépített formázás is, (verziószámtól függ, nézd át a "gyári" opciókat) ami pont ezt csinálja, és akkor még ezt is megspórolodMásik kérdésre: HA függvénnyel (és minden más worksheet függvénnyel) csak a cella tartalmát tudod befolyásolni, a formázását nem. Szóval nem, nem lehet vele színezni Feltételes formázás a barátod, ha ilyet akarsz. VBA teljesen felesleges ilyen célra.
[ Szerkesztve ]
-
Fferi50
Topikgazda
válasz bara17 #26516 üzenetére
Szia!
Mit látsz az adott cellában a munkalapon? 5.500 vagy valami mást? Mert az egy dolog, hogy a csv fájlban pontok vannak. Szám megjelenítésnél - ha a cella számformátumú, akkor nem tudsz így cserélni.
A cella számformátumától függ, hogy egy szám milyen módon jelenik meg. Először azt kellene megnézni, gyanítom, hogy elég lenne a cellaformátumot megváltoztatni.Üdv.
-
Louro
őstag
válasz bara17 #26097 üzenetére
Akkor egy segédmunkalapon felírnám a munkalapokat egymás alá. X-et tetetnék, amibe kell másolni. Majd szűrő az X-re, a megmaradt neveket tömbbe gyűjteném majd ciklussal a megfelelő munkalapokra másolnám. Ne bonyolítsuk, hogy munkalaponként máshová
Szűréshez kulcssszó:autofilter
...Szanaszét kommentelten. Fáradtan ez lett.....valószínűleg a topiktulaj tud majd szebbet is.
Sub Munkalapozó()
Dim MunkalapTomb As Variant
Dim WS As String
Dim lastrow As Integer
'Segéd sheet-en a munkalapok nevei. x-szel kell jelölni, hogy mi kell
Sheets("Segéd").Range("A1:B200").AutoFilter Field:=2, Criteria1:="x"
Range("A2:A" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Select
'mennyi munkalapról van szó. Mekkora lesz a tömb
lastrow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count
'másolás
Selection.Copy
'beillesztés egy segédoszlopba
Range("E1").PasteSpecial xlPasteValues
'tömbbe másolás
MunkalapTomb = Sheets("Segéd").Range("E1:E" & lastrow).Value
'segédoszlop törlése
Range("E1:E" & lastrow).Clear
'ciklus amekkora a tömb mérete
For i = 1 To UBound(MunkalapTomb)
'vegye ki a tömb soron következő elemét
WS = MunkalapTomb(i, 1)
'itt kell megadni, hogy mit akarsz másolni
Sheets("Segéd").Range("A1:A10").Select
'vágólapra tegye ki
Selection.Copy
'a megfelelő munkalapra illessze be az A1-től.
Sheets(WS).Range("A1").PasteSpecial xlPasteValues
Next
'Szűrő kikapcsolása
Sheets("Segéd").AutoFilterMode = False
End Sub[ Szerkesztve ]
Mess with the best / Die like the rest
-
Louro
őstag
válasz bara17 #26091 üzenetére
Ha nincs átnevezgetve vagy az elnevezésben van folytonosság, akkor ciklussal copy-paste-elnék.
Range(a-tól z-ig).Copy
For ciklussal meg végigmennék az összes munkalapon, amin kell és beilleszteném, ahová kell.Remélem tudtam segíteni.
Mess with the best / Die like the rest
-
azopi74
addikt
válasz bara17 #25919 üzenetére
Egyébként nem akarok beleszólni, de ha a makród nem .csv-ből "másolná" a dolgokat, hanem szabályosan importálná , akkor ezt az egész fejtörést megspórolhatnád magadnak, mivel akkor nem lenne szükség text to columsra sem.
Megadhatnád neki rögtön a delimitereket (elválasztókat), ezres elválasztót, tizedes elválasztót, oszloponkánt beállíthatod az adattípust, stb.
Valahogy így
With ActiveSheet.QueryTables.Add(Connection:="TEXT;eleresi ut.csv" _
, Destination:=Range("$A$1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = ","
.TextFileThousandsSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With -
Delila_1
veterán
válasz bara17 #25925 üzenetére
Szorozd meg 1-gyel az oszlopot.
Beírsz egy üres cellába egy 1-est, másolod (Ctrl+c-vel), kijelölöd az átalakítandó értékeket, és irányítottan, szorzóként beilleszted az 1-est. Utána törölheted a szorzót.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Új hozzászólás Aktív témák
- Fejhallgató erősítő és DAC topik
- Bemutatkozik az ASUS új, belépőszintű gaming notebookja, a V16
- Honor 200 Pro - mobilportré
- OLED TV topic
- Óra topik
- Milyen videókártyát?
- Samsung Galaxy A55 - új év, régi stratégia
- Apple iPhone 15 - a bevált módszer
- Képregény topik
- Villanyszerelés
- További aktív témák...
- Indiana Jones and the Great Circle - Digital Premium Edition - beváltás: 2025.1.30 - RTX 40XX
- Eladó Steam kulcsok kedvező áron!
- Játékkulcsok a legjobb áron: Steam
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Karácsonyi akció: ESET termékek hivatalos forgalmazója / NOD32 / Internet Security / stb.
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest