-
Fototrend
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
- Tőzsde és gazdaság
- Házimozi haladó szinten
- Formula-1 humoros
- Magisk
- Sütés, főzés és konyhai praktikák
- Samsung Galaxy A54 - türelemjáték
- OLED monitor topic
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Kertészet, mezőgazdaság topik
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- További aktív témák...
- Alienware 17r4 olvass
- 134 - Lenovo Legion Pro 7 (16IRX8H) - Intel Core i9-13900HX, RTX 4090
- BESZÁMÍTÁS! MSI A320M R5 1600 8GB DDR4 240GB SSD GTX 1050Ti 4GB ZALMAN T3 PLUS DeepCool 400W
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5060Ti 16GB GAMER PC termékbeszámítással
- Új Acer Nitro V15 FHD IPS 144Hz i9-13900H 14mag 16GB 512GB SSD Nvidia RTX 4060 8GB Win11 Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Fferi50