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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос удаляющий значения в ячейке - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 3123»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос удаляющий значения в ячейке (Макросы/Sub)
Макрос удаляющий значения в ячейке
Mark1976 Дата: Суббота, 16.04.2016, 11:40 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Всем привет. Есть макрос. Он удаляет значения из определенной ячейки. Но проблема в том, что он не удаляет например такое значения как 100% или 0%. Мне это очень важно, т.к. в процессе работы в моей таблице встречаются %. Еще когда макрос удаляет, значения ячейки "перескакивают". Мне надо чтобы значения, которые мы оставляем находились на своем месте. Вот такая возникла проблемка.
[vba]
Код
Sub Del_SubStr()
    Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
    Dim lCol As Long 'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim lMet As Long
    Dim arr

    sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "Запрос параметра", "")
    If sSubStr = "" Then lMet = 0 Else lMet = 1
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1))
    If lCol = 0 Then Exit Sub

    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    arr = Cells(1, lCol).Resize(lLastRow).Value
    Application.ScreenUpdating = 0
    Dim rr As Range
    For li = 1 To lLastRow
        If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub
[/vba]
К сообщению приложен файл: 16.04.16.xls(18Kb)
 
Ответить
СообщениеВсем привет. Есть макрос. Он удаляет значения из определенной ячейки. Но проблема в том, что он не удаляет например такое значения как 100% или 0%. Мне это очень важно, т.к. в процессе работы в моей таблице встречаются %. Еще когда макрос удаляет, значения ячейки "перескакивают". Мне надо чтобы значения, которые мы оставляем находились на своем месте. Вот такая возникла проблемка.
[vba]
Код
Sub Del_SubStr()
    Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
    Dim lCol As Long 'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim lMet As Long
    Dim arr

    sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "Запрос параметра", "")
    If sSubStr = "" Then lMet = 0 Else lMet = 1
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1))
    If lCol = 0 Then Exit Sub

    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    arr = Cells(1, lCol).Resize(lLastRow).Value
    Application.ScreenUpdating = 0
    Dim rr As Range
    For li = 1 To lLastRow
        If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - Mark1976
Дата добавления - 16.04.2016 в 11:40
buchlotnik Дата: Суббота, 16.04.2016, 12:06 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
и где в вашем примере %, которые не удаляются? И значения ячеек не перескакивают - макрос тупо строку сносит: [vba]
Код
rr.EntireRow.Delete
[/vba] не смутило?
Да и, собственно, где код в вашем файле?


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru
 
Ответить
Сообщениеи где в вашем примере %, которые не удаляются? И значения ячеек не перескакивают - макрос тупо строку сносит: [vba]
Код
rr.EntireRow.Delete
[/vba] не смутило?
Да и, собственно, где код в вашем файле?

Автор - buchlotnik
Дата добавления - 16.04.2016 в 12:06
Mark1976 Дата: Суббота, 16.04.2016, 12:27 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
buchlotnik, вот файл с макросом. Как сделать чтобы удаляемые строки не сносились?
К сообщению приложен файл: 9208063.xls(37Kb)
 
Ответить
Сообщениеbuchlotnik, вот файл с макросом. Как сделать чтобы удаляемые строки не сносились?

Автор - Mark1976
Дата добавления - 16.04.2016 в 12:27
Mark1976 Дата: Суббота, 16.04.2016, 12:29 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
не смутило?

я не понимаю ничего в кодах.
 
Ответить
Сообщение
не смутило?

я не понимаю ничего в кодах.

Автор - Mark1976
Дата добавления - 16.04.2016 в 12:29
buchlotnik Дата: Суббота, 16.04.2016, 13:19 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Цитата
Как сделать чтобы удаляемые строки не сносились?
никак. Строку либо удаляют, либо нет.
Опишите внятно, чего вы добиваетесь


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru
 
Ответить
Сообщение
Цитата
Как сделать чтобы удаляемые строки не сносились?
никак. Строку либо удаляют, либо нет.
Опишите внятно, чего вы добиваетесь

Автор - buchlotnik
Дата добавления - 16.04.2016 в 13:19
StoTisteg Дата: Суббота, 16.04.2016, 13:28 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
он не удаляет например такое значения как 100% или 0%

Так строковое значение "30%" и число 0.3 в процентном формате — это разные значения. Если у Вас на листе первое, Вы задаёте второе или наоборот, естественно, находить не будет. И вообще макрос написан как-то странно... Зачем сравнивать значение типа Long с выражением, заведомо возвращающим значение типа Boolean? Зачем вычислять номер последней заполненной строки через UsedRange, а потом всё равно перебирать с первой строки? И что мешает искать значение методом Find? Что он вообще должен делать? Марк, сделайте пример с двумя листами — на одном то, что есть, а на другом — заданные параметры и то, что должно получиться в итоге, так будет проще.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Суббота, 16.04.2016, 13:31
 
Ответить
Сообщение
он не удаляет например такое значения как 100% или 0%

Так строковое значение "30%" и число 0.3 в процентном формате — это разные значения. Если у Вас на листе первое, Вы задаёте второе или наоборот, естественно, находить не будет. И вообще макрос написан как-то странно... Зачем сравнивать значение типа Long с выражением, заведомо возвращающим значение типа Boolean? Зачем вычислять номер последней заполненной строки через UsedRange, а потом всё равно перебирать с первой строки? И что мешает искать значение методом Find? Что он вообще должен делать? Марк, сделайте пример с двумя листами — на одном то, что есть, а на другом — заданные параметры и то, что должно получиться в итоге, так будет проще.

Автор - StoTisteg
Дата добавления - 16.04.2016 в 13:28
Mark1976 Дата: Суббота, 16.04.2016, 16:21 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
StoTisteg, макрос я нашел на просторах рунета. Я не понимаю, что там в кодах не так. Я провизор, работаю в фарм.компании занимаюсь мониторингом. Аптек много. И вот надо найти способ как избавиться от 0% и 100%. Ручками через фильтр муторно, хочется процесс автоматизировать. Вот и попросил помощи на форуме.
К сообщению приложен файл: 160416_2.xls(20Kb)
 
Ответить
СообщениеStoTisteg, макрос я нашел на просторах рунета. Я не понимаю, что там в кодах не так. Я провизор, работаю в фарм.компании занимаюсь мониторингом. Аптек много. И вот надо найти способ как избавиться от 0% и 100%. Ручками через фильтр муторно, хочется процесс автоматизировать. Вот и попросил помощи на форуме.

Автор - Mark1976
Дата добавления - 16.04.2016 в 16:21
Manyasha Дата: Суббота, 16.04.2016, 16:45 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 1586
Репутация: 661 ±
Замечаний: 0% ±

Excel 2007, 2010
Mark1976, вот так подойдет?
[vba]
Код
Sub clearRows()
    For i = 3 To Cells(Rows.Count, "a").End(xlUp).Row
        If Round(Cells(i, "f"), 2) = 0 Or Round(Abs(Cells(i, "f")), 2) = 1 Then Cells(i, "f").ClearContents
    Next i
End Sub
[/vba]
макрос на кнопку повесила
К сообщению приложен файл: 160416_3.xls(38Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеMark1976, вот так подойдет?
[vba]
Код
Sub clearRows()
    For i = 3 To Cells(Rows.Count, "a").End(xlUp).Row
        If Round(Cells(i, "f"), 2) = 0 Or Round(Abs(Cells(i, "f")), 2) = 1 Then Cells(i, "f").ClearContents
    Next i
End Sub
[/vba]
макрос на кнопку повесила

Автор - Manyasha
Дата добавления - 16.04.2016 в 16:45
buchlotnik Дата: Суббота, 16.04.2016, 16:50 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
а что мешает 0% и 100% скрыть УФ, а итоги формулой посчитать?

[p.s.] я тоже провизор, это не мешает сесть и разобраться в коде
К сообщению приложен файл: 160416_2-1-.xls(29Kb)


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru
 
Ответить
Сообщениеа что мешает 0% и 100% скрыть УФ, а итоги формулой посчитать?

[p.s.] я тоже провизор, это не мешает сесть и разобраться в коде

Автор - buchlotnik
Дата добавления - 16.04.2016 в 16:50
StoTisteg Дата: Суббота, 16.04.2016, 17:14 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Sub Нули()

    Dim cl As Integer, i As Integer, rw As Integer

    cl = Cells.Find(What:="тклонение", LookAt:=xlPart).Column
    rw = Cells.Find(What:="тклонение", LookAt:=xlPart).Row + 1
    For i = rw To Cells(Rows.Count, cl).End(xlUp).Row
        If IsNumeric(Cells(i, cl).Value) Then
            Cells(i, cl).Value = IIf(Round(Cells(i, cl).Value, 2) = 0 Or Round(Cells(i, cl).Value, 2) = -1, "", Cells(i, cl).Value)
            Else: Cells(i, cl).Value = IIf(Cells(i, cl).Value = "0%" Or Cells(i, cl).Value = "-100%", "", Cells(i, cl).Value)
        End If
    Next i

End Sub
[/vba]
Усё. И никаких вводов непонятно чего непонятно зачем.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Суббота, 16.04.2016, 17:52
 
Ответить
Сообщение[vba]
Код
Sub Нули()

    Dim cl As Integer, i As Integer, rw As Integer

    cl = Cells.Find(What:="тклонение", LookAt:=xlPart).Column
    rw = Cells.Find(What:="тклонение", LookAt:=xlPart).Row + 1
    For i = rw To Cells(Rows.Count, cl).End(xlUp).Row
        If IsNumeric(Cells(i, cl).Value) Then
            Cells(i, cl).Value = IIf(Round(Cells(i, cl).Value, 2) = 0 Or Round(Cells(i, cl).Value, 2) = -1, "", Cells(i, cl).Value)
            Else: Cells(i, cl).Value = IIf(Cells(i, cl).Value = "0%" Or Cells(i, cl).Value = "-100%", "", Cells(i, cl).Value)
        End If
    Next i

End Sub
[/vba]
Усё. И никаких вводов непонятно чего непонятно зачем.

Автор - StoTisteg
Дата добавления - 16.04.2016 в 17:14
Mark1976 Дата: Суббота, 16.04.2016, 17:29 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
StoTisteg, макрос выдает ошибку в строке.
[vba]
Код
Cells(i, cl).Value = IIf(Round(Cells(i, cl).Value, 2) = 0 Or Round(Cells(i, cl).Value, 2) = -1 Or Cells(i, cl).Value = "0%" Or Cells(i, cl).Value = "-100%", "", Cells(i, cl).Value)
[/vba]
 
Ответить
СообщениеStoTisteg, макрос выдает ошибку в строке.
[vba]
Код
Cells(i, cl).Value = IIf(Round(Cells(i, cl).Value, 2) = 0 Or Round(Cells(i, cl).Value, 2) = -1 Or Cells(i, cl).Value = "0%" Or Cells(i, cl).Value = "-100%", "", Cells(i, cl).Value)
[/vba]

Автор - Mark1976
Дата добавления - 16.04.2016 в 17:29
Mark1976 Дата: Суббота, 16.04.2016, 17:33 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Manyasha, макрос удаляет только в колонке, где приписано в макросе. А если у меня 100% в другом столбце?
 
Ответить
СообщениеManyasha, макрос удаляет только в колонке, где приписано в макросе. А если у меня 100% в другом столбце?

Автор - Mark1976
Дата добавления - 16.04.2016 в 17:33
Mark1976 Дата: Суббота, 16.04.2016, 17:36 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
StoTisteg, макрос на другом листе не срабатывает.
 
Ответить
СообщениеStoTisteg, макрос на другом листе не срабатывает.

Автор - Mark1976
Дата добавления - 16.04.2016 в 17:36
Manyasha Дата: Суббота, 16.04.2016, 17:40 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 1586
Репутация: 661 ±
Замечаний: 0% ±

Excel 2007, 2010
Mark1976, специально написала не номер столбца, а букву: Cells(i, "f")
Если нужен не столбец F, а другой, поменяйте букву.

А вообще, на будущее:
я не понимаю ничего в кодах

тогда пример надо показывать максимально приближенный к оригиналу по структуре, тогда не нужно будет ничего менять в макросе


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеMark1976, специально написала не номер столбца, а букву: Cells(i, "f")
Если нужен не столбец F, а другой, поменяйте букву.

А вообще, на будущее:
я не понимаю ничего в кодах

тогда пример надо показывать максимально приближенный к оригиналу по структуре, тогда не нужно будет ничего менять в макросе

Автор - Manyasha
Дата добавления - 16.04.2016 в 17:40
StoTisteg Дата: Суббота, 16.04.2016, 17:42 | Сообщение № 15
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
макрос на другом листе не срабатывает

Так он заточен под активный лист. Можно, кончно, переписать под первый, но тогда Вы же станете жаловаться, что он не работает в другой книге :)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
макрос на другом листе не срабатывает

Так он заточен под активный лист. Можно, кончно, переписать под первый, но тогда Вы же станете жаловаться, что он не работает в другой книге :)

Автор - StoTisteg
Дата добавления - 16.04.2016 в 17:42
Mark1976 Дата: Суббота, 16.04.2016, 17:50 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
StoTisteg, ошибка выходит. Что то делаю не так.
 
Ответить
СообщениеStoTisteg, ошибка выходит. Что то делаю не так.

Автор - Mark1976
Дата добавления - 16.04.2016 в 17:50
Mark1976 Дата: Суббота, 16.04.2016, 17:51 | Сообщение № 17
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Так он заточен под активный лист.

как понять под активный?
 
Ответить
Сообщение
Так он заточен под активный лист.

как понять под активный?

Автор - Mark1976
Дата добавления - 16.04.2016 в 17:51
Mark1976 Дата: Суббота, 16.04.2016, 17:53 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 331
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
buchlotnik, формула хорошо. Но если у меня будет массив другой, как это исправить в формуле?
 
Ответить
Сообщениеbuchlotnik, формула хорошо. Но если у меня будет массив другой, как это исправить в формуле?

Автор - Mark1976
Дата добавления - 16.04.2016 в 17:53
StoTisteg Дата: Суббота, 16.04.2016, 17:53 | Сообщение № 19
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
ошибка выходит
Пардон, поправил.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
ошибка выходит
Пардон, поправил.

Автор - StoTisteg
Дата добавления - 16.04.2016 в 17:53
StoTisteg Дата: Суббота, 16.04.2016, 17:54 | Сообщение № 20
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
как понять под активный?
Прямо. Под тот лист, который активен в данный момент.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
как понять под активный?
Прямо. Под тот лист, который активен в данный момент.

Автор - StoTisteg
Дата добавления - 16.04.2016 в 17:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос удаляющий значения в ячейке (Макросы/Sub)
Страница 1 из 3123»
Поиск:

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