Nejste přihlášen/a.
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.
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
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.
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.
Dokonce sem si našel i Portable Excel 2003 i zde je vše v pořádku.
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.