- Egy kis depi (szösszenet inkább), remélem elfér itt :) 3#
- Pulsar X2 V3 Size 2 Gamer Egér és Pulsar 8K Wireless Dongle
- Út Korea turistaparadicsomába, amiről talán még sosem hallottál: Csedzsu-sziget
- Perplexity Pro AI képszerkesztési limit -egy képgenerátor függő tapasztalatai
- Adattár lemez előkészítése Windows telepítéshez
- sh4d0w: Én és a számítógép
- eBay-es kütyük kis pénzért
- sziku69: Fűzzük össze a szavakat :)
- Parci: Milyen mosógépet vegyek?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sellerbuyer: Hogyan turbózd fel a NAS-od sebességét olcsón és egyszerűen?
- Luck Dragon: Asszociációs játék. :)
- Brogyi: CTEK akkumulátor töltő és másolatai
- sziku69: Szólánc.
- sellerbuyer: Milyen mobiltelefont vegyek 2025 ben?
-
LOGOUT
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
-
Mutt
senior tag
válasz
Tompkins #18176 üzenetére
Szia,
A tükörszámos feladványra az én megoldásomat innen tudod letölteni.
Nem UDF-el, hanem a SZORZATÖSSZEG függvénnyel állítom elő a tükörképet és utána már csak
simán összeadás és összehasonlítások vannak benne.A tükörkép képlete ami összetett egyedül (A2-ben van az eredeti szám):
=SZORZATÖSSZEG(KÖZÉP(A2;1+HOSSZ(A2)-SOR(A$1:INDIREKT("A"&HOSSZ(A2)));1)*10^(HOSSZ(A2)-SOR(A$1:INDIREKT("A"&HOSSZ(A2)))))Ez a képlet 2 részből áll:
- az első része a számot egy karakter hosszúságra bontja és megfordítja, tehát pl. a 1766-ból a {6;6;7;1}
tömböt adja vissza. A fordítás egyszerűen úgy műkődik hogy hátulról kezdem el olvasni a karaktereket.
- a második része (10^HOSSZ...) pedig a helyiértéknek megfelelő szorzószámot állítja elő, vagyis {10^3;10^2;10^1;10^0}.A többit a szorzatösszeg magától teszi vagyis a számokat összeszorozza (6*1000+6*100+7*10+1*1).
A tükörszám ismeretében már lehet számolni az összegét az eredetinek és tükrének (C-oszlop), majd a kapott számot tükrözni (D-oszlop). A két számot összehasonlítva pedig lehet eldönteni, hogy kell-e további tükrözéseket végrehajtani (E-oszlopban 1-et íratok ha kell, 0-t ha már nem). Az E-oszlopban lévő ciklusok száma megadja, hogy hányszor tükröztünk. Max. 300 tükrözést hajt végre a fájlom, de ha többet akarsz akkor másold le a képleteket.
üdv.
-
Delila_1
veterán
válasz
Tompkins #18176 üzenetére
Megnéztem lépésenként. Mikor a 97-es értéknél az összeg 14003, ennek a hosszát 4-nek értékeli a tükrözésnél, ezért a tükörképét 41-nek hozza ki. A
For b = Len(osszeg) To 1 Step -1
sort (Do-Loop cikluson belül) megváltoztattam,
For b = Len(osszeg & "") To 1 Step -1
lett, így hozza a 6 db-os értéket. 395-nél és 584-nél 7 az érték.
Az
If Len(szam1) = 0 Then Tukroz = 0: GoTo Vege
sorban is a stringgé alakított forma hosszától indítom a ciklust:
If Len(szam1 & "") = 0 Then Tukroz = 0: GoTo Vege
-
Delila_1
veterán
válasz
Tompkins #18164 üzenetére
Közben sok számmal kipróbáltam. Vannak olyanok, ahol vagy egyáltalán nincs megoldás, vagy túl nagy az eredmény. A dimenzionálásnál az Integer-ek helyére Long-ot írtam, és megadtam egy határt (1000), ami után ne számoljon tovább, hanem írjon ki egy szöveget. Ezt a jelölt sorban módosíthatod a türelmednek megfelelően.
Function Tukroz(szam As Long)
Dim ford, b As Long, darab As Long, osszeg As Long, szam1 As Long
szam1 = szam
If Len(szam1) = 0 Then Tukroz = 0: GoTo Vege
For b = Len(szam1) To 1 Step -1
ford = ford & Mid(szam, b, 1)
Next
If szam = ford * 1 Then
Tukroz = 0: GoTo Vege
Else
Do
osszeg = szam1 + ford
ford = ""
darab = darab + 1
If darab > 1000 Then 'Itt módosíthatsz
Tukroz = "Nincs megoldás, vagy 1000-nél nagyobb": GoTo Vege
Else
For b = Len(osszeg) To 1 Step -1
ford = ford & Mid(osszeg, b, 1)
Next
szam1 = osszeg
If szam1 = ford * 1 Then
Tukroz = darab: GoTo Vege
End If
End If
Loop While szam1 <> ford * 1
End If
Tukroz = darab
Vege:
End Function -
Delila_1
veterán
válasz
Tompkins #18164 üzenetére
Írtam egy funkciót rá, de csak az általad megadott számokkal ellenőriztem. Azokkal OK.
Function Tukroz(szam As Integer)
Dim ford, b As Integer, darab As Integer, osszeg As Long, szam1 As Long
szam1 = szam
If Len(szam1) = 0 Then Tukroz = 0: GoTo Vege
For b = Len(szam1) To 1 Step -1
ford = ford & Mid(szam, b, 1)
Next
If szam = ford * 1 Then
Tukroz = 0: GoTo Vege
Else
Do
osszeg = szam1 + ford
ford = ""
darab = darab + 1
For b = Len(osszeg) To 1 Step -1
ford = ford & Mid(osszeg, b, 1)
Next
szam1 = osszeg
If szam1 = ford * 1 Then
Tukroz = darab: GoTo Vege
End If
Loop While szam1 <> ford * 1
End If
Tukroz = darab
Vege:
End Function
Új hozzászólás Aktív témák
Hirdetés
- Eredeti játékok OFF topik
- E-roller topik
- Samsung Galaxy S25 - végre van kicsi!
- Linux Mint
- iPhone topik
- Merész dizájn és új teleobjektív az iPhone 17 Pro mobilokban
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Milyen széket vegyek?
- Google Pixel 8 Pro - mestersége(s) az intelligencia
- OpenWRT topic
- További aktív témák...
- Huawei P20 Lite 64GB, Kártyafüggetlen, 1 Év Garanciával
- Surface Laptop 5 Touch 13.5 Retina i7-1265U 10mag 4.8Ghz 16GB 512GB Intel Iris XE Win11 Pro Garancia
- Bomba ár! HP ProBook 6570B - i5-3GEN I 4GB I 320GB I 15,6" HD+ I Cam I W10 I Garancia!
- ÚJ Dell Latitude 15 5550 - 15.6"FullHD IPS - Ultra 5 135U - 16GB - 512GB SSD - Win11 - 2,5+ év gari
- Okosóra felvásárlás!! Samsung Galaxy Watch 6, Samsung Galaxy Watch 7, Samsung Galaxy Watch Ultra
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest