Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
maximus1281
1 / 1 / 0
Регистрация: 24.09.2017
Сообщений: 23
1

Замена значений "менее 1" на "0"

04.10.2017, 10:30. Просмотров 865. Ответов 9
Метки нет (Все метки)

Здравствуйте! Помогите пожалуйста, нужен макрос, который выполняет 2 задачи:
1. в определенной колонке, будет находить значения меньше 1 (например 0,16) и заменять их на "0"
2. подставляет в другую колонку нужный символ. Этот макрос уже есть, работает, но его нужно соединить с первым (замена значений меньше 1 на 0).
То есть как бы двойной макрос, одна из частей которого уже написана:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub k_к_артикулам()
 
For Each c In ActiveSheet.Columns(ActiveCell.Column).Cells '(для клеток щёлкнутой колонки)
    If IsEmpty(c) Then 'проходим эту клетку мимо
    Else
        If Asc(c) <> Asc("k") Then c.Value = "k" & c
    End If
Next
    
End Sub
Просто программа, которая работает с макросами эксель позволяет ввести только один макрос, а задачи выполнить нужно две
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2017, 10:30
Ответы с готовыми решениями:

Отметить полужирным шрифтом в исходном тексте слова имеющие приставки "пре", "при", "на", "не"
Отметить полужирным шрифтом в исходном тексте слова имеющие приставки &quot;пре&quot;, &quot;при&quot;, &quot;на&quot;, &quot;не&quot;....

Проверить, содержит ли строка символы отличные от "+", "-", "*" и "/"
&quot;+&quot;, &quot;-&quot;, &quot;*&quot; и &quot;/&quot; вот начал, дальше не знаю что делать Sub rr() Dim s As String,...

Выборка уникальных дат из строк листа "l1" и помещение их в лист "l3", Не получается. На листе "l3" вставляет
Запускаю с листа &quot;l1&quot; построчно работает, но мне нужно, чтобы заполнялись столбцы, начиная со...

MS Acces VBA. Как вывести поле "фамилия" и "группа" из таблицы "студенты" в Access ?
Использовать Fields? Посмотрите в рисунке задания.

Присвоить значение "10" элементам большим "120" и меньшим"150" масива Р(10,20)
Простите за дублирование, но мой прошлый вопрос не увенчался большим успехом... Присвоить значение...

9
snipe
3161 / 1127 / 275
Регистрация: 07.08.2013
Сообщений: 2,875
04.10.2017, 10:52 2
не совсем понятна задача
вот это
Цитата Сообщение от maximus1281 Посмотреть сообщение
подставляет в другую колонку нужный символ.
судя по коду
операции осуществляются с выделенной колонкой
0
Vlad999
3159 / 1941 / 619
Регистрация: 02.11.2012
Сообщений: 4,986
04.10.2017, 10:53 3
сделайте небольшой файл пример так есть, так должно получиться.
0
snipe
3161 / 1127 / 275
Регистрация: 07.08.2013
Сообщений: 2,875
04.10.2017, 10:53 4
возникает вопрос какая колонка определенная а какая колонка другая?
0
04.10.2017, 10:53
maximus1281
1 / 1 / 0
Регистрация: 24.09.2017
Сообщений: 23
04.10.2017, 11:08  [ТС] 5
колонку для подстановки символа и колонку для замены значения меньше 1 на 0 - нужно прописать, операции не с выделенной колонкой. Макрос действительно содержал выделенную колонку, я ошибся извините. Пример во вложенном файле. В данном примере колонка "j" (или 10) - для подстановки символа, колонка "r" (или 18) - для замены значения.
Правильный макрос для подстановки
Visual Basic
1
2
3
4
5
6
For Each c In ActiveSheet.Columns(10).Cells '(??? ?????? ????????? ???????)
    If IsEmpty(c) Then '???????? ??? ?????? ????
    Else
        If Asc(c) <> Asc("t") Then c.Value = "t" & c
        End if        
        Next
0
Вложения
Тип файла: xlsx Книга2.xlsx (11.6 Кб, 3 просмотров)
Vlad999
3159 / 1941 / 619
Регистрация: 02.11.2012
Сообщений: 4,986
04.10.2017, 11:31 6
Лучший ответ Сообщение было отмечено maximus1281 как решение

Решение

проверяйте
Visual Basic
1
2
3
4
5
6
For i = 2 To Cells(Rows.Count, "J").End(xlUp).Row
   If Not IsEmpty(Cells(i, "J")) Then
    If Left(Cells(i, "J"), 1) <> "t" Then Cells(i, "J") = "t" & Cells(i, "J")
   End If
   Cells(i, "R") = IIf(Cells(i, "R") < 1, 0, Cells(i, "R"))
Next
1
maximus1281
1 / 1 / 0
Регистрация: 24.09.2017
Сообщений: 23
04.10.2017, 11:45  [ТС] 7
чего то не получается, пишет " invalid outside procedure "
0
maximus1281
1 / 1 / 0
Регистрация: 24.09.2017
Сообщений: 23
05.10.2017, 22:10  [ТС] 8
Спасибо Vlad999 ! Вставил в программу данный макрос, он работает. В экселе не получалось, очевидно по причине своей недостаточной компетентности. Спасибо!!
0
SoftIce
es geht mir gut
11189 / 4608 / 1161
Регистрация: 27.07.2011
Сообщений: 11,309
Завершенные тесты: 1
05.10.2017, 22:15 9
Цитата Сообщение от maximus1281 Посмотреть сообщение
Вставил в программу данный макрос, он работает. В экселе не получалось
Интересно стало, Вы куда в Экселе вставляли? И куда в конце концов вставили ?
0
maximus1281
1 / 1 / 0
Регистрация: 24.09.2017
Сообщений: 23
05.10.2017, 22:30  [ТС] 10
в экселе - Alt+F11, Visual Basic. Insert - Module. Конечная цель была - не для экселя, а для программы которая работает на основе экселя, туда в окно макроса.
1
05.10.2017, 22:30
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2017, 22:30

Замена "," на "." при выводе массива в файл
Есть массив b (1 To n, 1 to 5). В нём есть дробные числа. Выводим в файл: Open &quot;d:filename.txt&quot;...

Как сделать, чтобы kod= "=Find("","", R2C1, 1)"
Как следующий код Cells(1, 9).Select ActiveCell.FormulaR1C1 = '=Find('','', R2C1, 1)' kod =...

В последнем абзаце удалить все вхождения символов "+","-", "*"
Дан любой текст В последнем абзаце удалить все вхождения символов &quot;+&quot;,&quot;-&quot;, &quot;*&quot;.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.