Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Заменить значения в массиве на исключительно числовые - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заменить значения в массиве на исключительно числовые (Макросы/Sub)
Заменить значения в массиве на исключительно числовые
ant6729 Дата: Суббота, 22.04.2017, 13:08 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Добрый день!
Изучаю матчасть...про val
Нужно, используя функцию var, в произвольно выделенном участке массива оставлять только цифры.
К сообщению приложен файл: 0319777.xlsx (8.4 Kb)


Сообщение отредактировал ant6729 - Суббота, 22.04.2017, 14:17
 
Ответить
СообщениеДобрый день!
Изучаю матчасть...про val
Нужно, используя функцию var, в произвольно выделенном участке массива оставлять только цифры.

Автор - ant6729
Дата добавления - 22.04.2017 в 13:08
RAN Дата: Суббота, 22.04.2017, 13:43 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Нет, нужно, значит нужно, но применять "Оценочная дисперсия на основе выборки" для решения подобной задачи, на мой взгляд, как минимум, странно.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНет, нужно, значит нужно, но применять "Оценочная дисперсия на основе выборки" для решения подобной задачи, на мой взгляд, как минимум, странно.

Автор - RAN
Дата добавления - 22.04.2017 в 13:43
ant6729 Дата: Суббота, 22.04.2017, 13:56 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Ячейку с var понял, как сделать...
Пошел дальше, задумался, а что если каждую ячейку в выделенном диапазоне...

Не если это действительно, как вы говорите, странно тогда как можно реализовать иначе без var?

Интересно увидеть все варианты.
Для опыта. Все равно вы щелкаете это, как орехи...
 
Ответить
СообщениеЯчейку с var понял, как сделать...
Пошел дальше, задумался, а что если каждую ячейку в выделенном диапазоне...

Не если это действительно, как вы говорите, странно тогда как можно реализовать иначе без var?

Интересно увидеть все варианты.
Для опыта. Все равно вы щелкаете это, как орехи...

Автор - ant6729
Дата добавления - 22.04.2017 в 13:56
RAN Дата: Суббота, 22.04.2017, 14:01 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub q()
    Selection.Replace " *", ""
End Sub
[/vba]
:D


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub q()
    Selection.Replace " *", ""
End Sub
[/vba]
:D

Автор - RAN
Дата добавления - 22.04.2017 в 14:01
ant6729 Дата: Суббота, 22.04.2017, 14:14 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Спасибо)
Все оказалось проще...чем казалось

Хорошо, объясните, пожалуйста, а зачем тогда Val, если можно идти более простым путем
Где Val будет уместнее?

Извините, неверно указал не var, a val


Сообщение отредактировал ant6729 - Суббота, 22.04.2017, 14:18
 
Ответить
СообщениеСпасибо)
Все оказалось проще...чем казалось

Хорошо, объясните, пожалуйста, а зачем тогда Val, если можно идти более простым путем
Где Val будет уместнее?

Извините, неверно указал не var, a val

Автор - ant6729
Дата добавления - 22.04.2017 в 14:14
ant6729 Дата: Вторник, 25.04.2017, 10:02 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Приблизительно вот это хотел
[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]
 
Ответить
СообщениеПриблизительно вот это хотел
[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]

Автор - ant6729
Дата добавления - 25.04.2017 в 10:02
ant6729 Дата: Вторник, 25.04.2017, 17:50 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Решил покопаться дальше... поэтому подскажите, пожалуйста, ещё...

Есть код из просторов интернета
[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 первого примера делает то, что нужно.
Буду благодарен за любые пояснения.
К сообщению приложен файл: 8658453.xlsx (8.7 Kb)
 
Ответить
СообщениеРешил покопаться дальше... поэтому подскажите, пожалуйста, ещё...

Есть код из просторов интернета
[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
Дата добавления - 25.04.2017 в 17:50
_Boroda_ Дата: Вторник, 25.04.2017, 18:03 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
почему у меня оставляет в целевой ячейке только последнее значение после числовых?

Потому, что Вы не прилепляете слева то, что уже там было
[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]
К сообщению приложен файл: 8658453_1.xlsm (14.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
почему у меня оставляет в целевой ячейке только последнее значение после числовых?

Потому, что Вы не прилепляете слева то, что уже там было
[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]

Автор - _Boroda_
Дата добавления - 25.04.2017 в 18:03
RAN Дата: Вторник, 25.04.2017, 18:08 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Если слева и справа оно одинаково

Кто(что) оно?
Однако в результате в целевой ячейке получится бестроковое значение

А по русски что это такое?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Если слева и справа оно одинаково

Кто(что) оно?
Однако в результате в целевой ячейке получится бестроковое значение

А по русски что это такое?

Автор - RAN
Дата добавления - 25.04.2017 в 18:08
ant6729 Дата: Вторник, 25.04.2017, 19:14 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
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
Дата добавления - 25.04.2017 в 19:14
buchlotnik Дата: Вторник, 25.04.2017, 19:20 | Сообщение № 11
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
если 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) то значение переменной = значение переменной + этот самый символ из ttt124

Автор - buchlotnik
Дата добавления - 25.04.2017 в 19:20
ant6729 Дата: Вторник, 25.04.2017, 19:35 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
ngle digit (0–9) то значение переменной = значение переменной + этот самый символ из ttt124

Спасибо, теперь понятно.
 
Ответить
Сообщение
ngle digit (0–9) то значение переменной = значение переменной + этот самый символ из ttt124

Спасибо, теперь понятно.

Автор - ant6729
Дата добавления - 25.04.2017 в 19:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заменить значения в массиве на исключительно числовые (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!