Страницы: 1
RSS
Обращение к определённому значению в ячейке ?
 
Уважаемые форумчане , подскажите пожалуйста , как обратиться к четвёртому значению если в ячейке четырёхзначное число допустим : 4579 , при помощи  :  
 
Sub Test1()  
n = Mid([e3], 4, 1)
[f3] = n
End Sub  
 
Но если допустим в ячейке числа 5:08 ,метод выше не подходит .
 
Одно значение  (один символ) справа - не подойдёт?
 
Ну, так допишите проверку -    
 
ЕСЛИ длина текста в ячейке E3 больше 3, ТОГДА MID() ... КОНЕЦ ЕСЛИ  
 
If Len([E3]) > 3 THEN
[f3] = Mid([e3], 4, 1)
End If
 
ИМХО речь не о том. MID строковая функция и подсовывать ей надо строку, а автор пытается подсунуть значение времени. Понятно, что выдаст не то, что ожидалось.
Я сам - дурнее всякого примера! ...
 
по-моему, MID (ПСТР) пофиг, что там в строке текст, числа, символы, хоть пусто  
 
Sub Test()  
   [A1] = "dfldjlfkdkf"
   MsgBox Mid([A1], 4, 1)
   [A1] = "123456789"
   MsgBox Mid([A1], 4, 1)
   [A1] = "@#$%$%^&&*()"
   MsgBox Mid([A1], 4, 1)
End Sub
 
Не скажи, Паш. Попробуй оба варианта и посмотри на результат.
Я сам - дурнее всякого примера! ...
 
ну, тут нужно знать какие данные у человека в ячейке  
 
4579 или время/дата 5:08  
 
и какой он результат хочет получить )
 
Ну это мне так показалось, что автор имея в ячейке число 0,213888888888889 и видя при этом 5:08 не согласился с тем, что результат Mid([A1], 4, 1) - 1. Подождем автора.
>> Согласен с Павлом. Время для Excel это то же число. И дело тут не в том, какую >> функцию использовать, а как исходные данные при этом в эту функцию вставлять.  
Дим, а разве мое утверждение от 21.01.2012, 22:58 этому противоречит?  
 
Вот еще выдержка из справки:  
Mid(string, start[, length])
The Mid function syntax has these named arguments:  
Part Description    
string Required. String(!) expression from which characters are returned.  
 
Т.е. требуется именно строка. А то, что ВБА производит неявные преобразования неверных типов данных на свое усмотрение, как раз и приводит иногда к неожиданным результатам.
Я сам - дурнее всякого примера! ...
 
Мы утверждаем одно и то же и при этом делаем вид, что спорим:-)  
 
-=91419=-
Я сам - дурнее всякого примера! ...
 
БОЛЬШОЕ СПАСИБО ВСЕМ ЗА ПОМОЩЬ ! Особенно KukLP и The_Prist .
 
Уважаемые форумчане , почему-то не получается проссумировать два числа :  
 
в ячейке информация указана так  2:03 или  1:01  и т.д . Эта информация данные результатов матчей из WEB сайта  
 
Sub Test5()  
Dim i As Range  
For Each i In Range("e3:e12")  
n = Mid(CStr(CDate([i])), 4, 1)
p = Mid(CStr(CDate([i])), 1, 1)
[f3] = p
[g3] = n
[h3] = p + n
 
Next i  
End Sub
 
REX  
 
1) приложите пример в файле Excel  
2) мне кажется лучше разбивать ячейку через Split по двоеточию и брать число через Val
 
без вашего примера, могу предоставить такой код  
 
Sub test()  
Dim iVal1 As Long, iVal2 As Long  
   [A1] = "2:03"
   [B1] = "1:01"
   iVal1 = Val(Split(Range("A1").Text, ":")(1))  
   iVal2 = Split(Range("B1").Text, ":")(1)  
   MsgBox iVal1 + iVal2, vbInformation, "Ответ"  
End Sub
 
Вот пример .
 
Проссуммировать надо числа которые рассположены в одной ячейке между дветочием .
 
Попробуйте так  
 
Sub Test()  
   Dim iVal1 As Long, iVal2 As Long, iCell As Range  
 
   With Sheets("Лист1")  
       For Each iCell In Range("E3:E" & .Cells(Rows.Count, "E").End(xlUp).Row)  
           If Not IsEmpty(iCell) Then  
               iVal1 = Val(Split(iCell.Text, ":")(0))  
               iVal2 = Val(Split(iCell.Text, ":")(1))  
               iCell.Offset(0, 1) = iVal1 + iVal2  
           End If  
       Next iCell  
   End With  
End Sub
 
ПОЧЕМУ-ТО НЕ ПОЛУЧАЕТСЯ (В ФАЙЛЕ ПРИМЕРЕ ВСЁ ПОЛУЧАЕТСЯ ), А В ЭТОМ ПОЧЕМУ-ТО НЕТ ?
 
в столбце F поменяйте формат ячейки на Общий или Числовой
 
СПАСИБО Ластик !
Страницы: 1
Читают тему
Наверх