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*
hodnocení

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*
hodnocení

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.

hodnocení

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*
hodnocení

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/...

hodnocení

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*
hodnocení

0x

Co takto: viz soubor.

leteckaposta.cz/...

hodnocení

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]