Nejste přihlášen/a.

Přihlásit se do poradny

 

Visual Basic - Excel vrácení hodnot stringu

Od: h4ever® odpovědí: 9 změna:

Nemám s makry v Excelu žádné zkušenosti, mohli byste poradit s funkcí, která by sečetla ordinální hodnoty znaků v řetězci? Nejlépe posunuté o -96, tak aby znaky a-z byly interpretovány jako ordinální hodnoty od 1-26. Např ve sloupci 2 mám tyto hodnoty:

abs

acc

acq

add

adj

adu

a do sloupce 3 vedle toho bych chtěl vložit ty sečtené hodnoty.

 

 

9 odpovědí na otázku
Řazeno dle hodnocení

 

 

lobo*

2x

Sub ASCI_to_Value()
Dim arrASCI(), arrVysledek(), Znak As String
Dim Maxradek As Long, Soucet As Integer
Dim i As Long, x As Integer

With List1
Maxradek = .Cells(Rows.Count, 2).End(xlUp).Row
If Maxradek = 1 Then
ReDim arrASCI(1 To 1, 1 To 1)
arrASCI(1, 1) = Cells(1, 2).Value2
Else
arrASCI = .Cells(1, 2).Resize(Maxradek).Value2
End If
ReDim arrVysledek(1 To UBound(arrASCI))

For i = LBound(arrASCI) To UBound(arrASCI)
For x = 1 To Len(arrASCI(i, 1))
Znak = Mid(arrASCI(i, 1), x, 1)
If Asc(Znak)> 96 Then
Soucet = Soucet + Asc(Znak) - 96
End If
Next x
arrVysledek(i) = Soucet
Soucet = 0
Next i
.Cells(1, 3).Resize(UBound(arrVysledek)).Value = Application.Transpose(arrVysledek)
End With
Erase arrASCI
Erase arrVysledek
End Sub

lobo*

Díky. Vidím že to funguje, ale šlo by ještě ty výsledky vkládat vedle toho sloupce?

lobo*

Popravdě nevím jak to myslíš. Textové hodnoty jsou ve sloupci B a jejich součet se vkládá vedle, tedy do sloupce C.

Pokud to chceš jinak, budeš muset být konkrétnější, nebo ještě lépe ukázat svůj soubor.


Když otevřu tvůj soubor, pak vyberu Makra - tvoje makro a spustím, tak mi to neudělá nic. Ale když to krokuju tak vidím, že na pozadí probíhá výpočet. Teda kukátko ukazuje hodnoty součtu.

 

lobo*

2x

To jako cheš říct, že makro na list nevkládá žádné výsledky? Neodstranil si řádek kódu?

V přiloženém videu je vydět jak makro pracuje a vrací výsledky do listu ve sloupci C. Soubor (*.xls) sem stáhnul z pošty abych vyloučil poškození a makro se chová korektně. Testováno v Excelu 2007.

leteckaposta.cz/...

Dokonce sem si našel i Portable Excel 2003 i zde je vše v pořádku.

leteckaposta.cz/...


Dneska jsem to zkoušel ještě jednou a hodnoty se tam vypisují. Včera jsem musel něco udělat špatně. Tak dík.

 

lobo*

0x

Co takto: viz soubor.

leteckaposta.cz/...


Mohl by si to poslat jako text nebo codepaste? Ten soubor nemohu otevřít. Je to binárka.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]