Sub ggg() Dim i& lr = Cells(Rows.Count, 1).End(xlUp).Row SelCol = Selection.Column For i = 1 To lr Cells(i, SelCol).Value = Val(Cells(i, SelCol).Value) Next End Sub
[/vba]
Приблизительно вот это хотел [vba]
Код
Sub ggg() Dim i& lr = Cells(Rows.Count, 1).End(xlUp).Row SelCol = Selection.Column For i = 1 To lr Cells(i, SelCol).Value = Val(Cells(i, SelCol).Value) Next End Sub
Решил покопаться дальше... поэтому подскажите, пожалуйста, ещё...
Есть код из просторов интернета [vba]
Код
Function Numb(r As Range) As String Dim i As Long For i = 1 To Len(r.Value) If Mid(r.Value, i, 1) Like "#" Then Numb = Numb & Mid(r.Value, i, 1) Next i End Function
[/vba]
Объясните, пожалуйста, мне как
[vba]
Код
If Mid(r.Value, i, 1) Like "#" Then Numb = Numb & Mid(r.Value, i, 1)
[/vba] Если слева и справа оно одинаково? Однако в результате в целевой ячейке получится бестроковое значение
И второй вопрос, вот мое творчество:)) [vba]
Код
Sub ccc() Dim Numb As String Dim r As Range Dim i As Long SelCol = Selection.Column SelRow = Selection.Row For i = 1 To Len(Cells(SelRow, SelCol).Value) If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then Cells(1, 9).Value = Mid(Cells(SelRow, SelCol).Value, i, 1) Next i End Sub
[/vba]
Не могу понять, почему у меня оставляет в целевой ячейке только последнее значение после числовых? А вот в function первого примера делает то, что нужно. Буду благодарен за любые пояснения.
Решил покопаться дальше... поэтому подскажите, пожалуйста, ещё...
Есть код из просторов интернета [vba]
Код
Function Numb(r As Range) As String Dim i As Long For i = 1 To Len(r.Value) If Mid(r.Value, i, 1) Like "#" Then Numb = Numb & Mid(r.Value, i, 1) Next i End Function
[/vba]
Объясните, пожалуйста, мне как
[vba]
Код
If Mid(r.Value, i, 1) Like "#" Then Numb = Numb & Mid(r.Value, i, 1)
[/vba] Если слева и справа оно одинаково? Однако в результате в целевой ячейке получится бестроковое значение
И второй вопрос, вот мое творчество:)) [vba]
Код
Sub ccc() Dim Numb As String Dim r As Range Dim i As Long SelCol = Selection.Column SelRow = Selection.Row For i = 1 To Len(Cells(SelRow, SelCol).Value) If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then Cells(1, 9).Value = Mid(Cells(SelRow, SelCol).Value, i, 1) Next i End Sub
[/vba]
Не могу понять, почему у меня оставляет в целевой ячейке только последнее значение после числовых? А вот в function первого примера делает то, что нужно. Буду благодарен за любые пояснения.ant6729
почему у меня оставляет в целевой ячейке только последнее значение после числовых?
Потому, что Вы не прилепляете слева то, что уже там было [vba]
Код
Sub ccc() Dim Numb As String Dim r As Range Dim i As Long SelCol = Selection.Column SelRow = Selection.Row For i = 1 To Len(Cells(SelRow, SelCol).Value) If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then z_ = z_ & Mid(Cells(SelRow, SelCol).Value, i, 1) End If Next i Cells(1, 9) = z_ End Sub
почему у меня оставляет в целевой ячейке только последнее значение после числовых?
Потому, что Вы не прилепляете слева то, что уже там было [vba]
Код
Sub ccc() Dim Numb As String Dim r As Range Dim i As Long SelCol = Selection.Column SelRow = Selection.Row For i = 1 To Len(Cells(SelRow, SelCol).Value) If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then z_ = z_ & Mid(Cells(SelRow, SelCol).Value, i, 1) End If Next i Cells(1, 9) = z_ End Sub
RAN имел ввиду значение слева равно значению справа, если это объяснит что-то)
Я когда писал MsgBox, чтобы понять, что выводит код, то код выводил посимвольно значение ячейки. Например, если судить по А1, где у меня ttt124 то, выводил t t t 1 2 4 и оставлял 4 в целевой ячейке.
Тогда отсюда вопрос [vba]
Код
If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then z_ = z_ & Mid(Cells(SelRow, SelCol).Value, i, 1)
[/vba]
Почему оно дает 1&2&4? Если по логике вещей должно t&t&t&1&2&4 т.е. ttt124...
Почему не так, я не понимаю.
Потому что строчка [vba]
Код
If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then z_ = z_ & Mid(Cells(SelRow, SelCol).Value, i, 1)
[/vba] читается, как: если значение ячейки имеет Any single digit (0–9) то значение переменной = значение переменной + значение ячейки
То есть если (берем из примера в приложенном файле ячейку A1) : если ttt124 имеет Any single digit (0–9) то значение переменной = ttt124 + ttt124
Ладно... Как я и предполагал, это проще запомнить.
RAN имел ввиду значение слева равно значению справа, если это объяснит что-то)
Я когда писал MsgBox, чтобы понять, что выводит код, то код выводил посимвольно значение ячейки. Например, если судить по А1, где у меня ttt124 то, выводил t t t 1 2 4 и оставлял 4 в целевой ячейке.
Тогда отсюда вопрос [vba]
Код
If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then z_ = z_ & Mid(Cells(SelRow, SelCol).Value, i, 1)
[/vba]
Почему оно дает 1&2&4? Если по логике вещей должно t&t&t&1&2&4 т.е. ttt124...
Почему не так, я не понимаю.
Потому что строчка [vba]
Код
If Mid(Cells(SelRow, SelCol).Value, i, 1) Like "#" Then z_ = z_ & Mid(Cells(SelRow, SelCol).Value, i, 1)
[/vba] читается, как: если значение ячейки имеет Any single digit (0–9) то значение переменной = значение переменной + значение ячейки
То есть если (берем из примера в приложенном файле ячейку A1) : если ttt124 имеет Any single digit (0–9) то значение переменной = ttt124 + ttt124
Ладно... Как я и предполагал, это проще запомнить.ant6729
если ttt124 имеет Any single digit (0–9) то значение переменной = ttt124 + ttt124
это как вообще? Вы в цикле ПОСИМВОЛЬНО проходите значение в ячейке и также ПОСИМВОЛЬНО добавляете к переменной z_
Цитата
читается, как:
не-а, читается если текущий (по шагу цикла) символ из ttt124 имеет Any single digit (0–9) то значение переменной = значение переменной + этот самый символ из ttt124
Цитата
если ttt124 имеет Any single digit (0–9) то значение переменной = ttt124 + ttt124
это как вообще? Вы в цикле ПОСИМВОЛЬНО проходите значение в ячейке и также ПОСИМВОЛЬНО добавляете к переменной z_
Цитата
читается, как:
не-а, читается если текущий (по шагу цикла) символ из ttt124 имеет Any single digit (0–9) то значение переменной = значение переменной + этот самый символ из ttt124buchlotnik