Страницы: 1 2 След.
RSS
Удалить числа с тире и со словами
 
Здравствуйте, есть пример, в нем нужно удалить все, что отмечено желтым
1) удалить все цифры в столбце A (с тире)
2) удалить все цифры в столбце A (со словами)
3) удалить все цифры в столбце A (с тире и со словами)
удалить ячейки с такими данными
Изменено: next777pro - 22.06.2016 15:05:33
 
Код
Sub dddd()
Dim ячейка As Range
For Each ячейка In Range("a1:a15")
If ячейка Like "*[а-я]*" Or ячейка Like "*-*" Or ячейка Like "*[a-z]*" Then ячейка = ""
Next ячейка
End Sub
Изменено: Фродо - 22.06.2016 15:16:05
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Да тут всё проще: проверяем - число в ячейке или нет:
Код
Sub qqq()
Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To LastRow
        If Not IsNumeric(Cells(i, 1)) Then Cells(i, 1) = ""
    Next
End Sub
 
Код
Sub qq()
Range("A1:A15").SpecialCells(xlCellTypeConstants,2).Clearcontents
End Sub
Изменено: Бахтиёр - 22.06.2016 15:20:10
 
Юрий М,
а если дата? )))
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Значит дата. В примере про дату ни слова.
 
Юрий М, так там и про число ни слово
а хотят удалить....
но ваш макрос и дату сносит...
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
А никто не отменял IsDate - кто мешает сделать проверку? )
 
Цитата
Фродо написал: так там и про число ни слово
Это как? Числа оставить
 
Цитата
Юрий М написал: Числа оставить
вроде нет этого в условиях ))))
 
это он зацепил условия из другой темы)))) глобальный dim))))
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Цитата
Бахтиёр написал: вроде нет этого в условиях
Есть: ячейки с числами не помечены на удаление. Вот!  :)
 
еще вариант,кнопка test,для повтора скопировать данные с соседнего листа
Код
Sub test()
 Dim z, i&: z = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
 With CreateObject("VBScript.RegExp"): .Pattern = "[-a-zа-яё]+": .IgnoreCase = True
 For i = 1 To UBound(z) 
   If .test(z(i, 1)) Then Range("A" & i + 1 )= ""
 Next
 End With
End Sub
Изменено: sv2013 - 22.06.2016 16:23:09
 
sv2013, макрос хорош, но он строки удаляет, а не ячейки

проверил все и лучше всего справился самый первый вариант от
Фродо

Всем спасибо.
Изменено: next777pro - 22.06.2016 18:06:25
 
next777pro, цитируйте, но со смыслом, а не просто для того, чтобы было понятно, кому отвечаете. Можно имя написать, без цитаты будет понятно.
 
Цитата
next777pro написал:  а не ячейки
вот удаление строки, для удаление ячейки тогда нужно знать в какую сторону смещение
Код
Sub dddd()
Dim ячейка As Range
For Each ячейка In Range("a1:a15")
If ячейка Like "*[а-я]*" Or ячейка Like "*-*" Or ячейка Like "*[a-z]*" Then Rows(ячейка.Row).Delete
Next ячейка
End Sub
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Как вариант, удаляет все, что где есть знаки, отличающиеся от чисел, точки или запятой
Код
Sub tt()
    Dim arr(), i As Long
    arr = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    With CreateObject("VBScript.Regexp")
        .Pattern = "[^\d\.,]"
        For i = 1 To UBound(arr)
            If .test(arr(i, 1)) Then arr(i, 1) = ""
        Next
    End With
    Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) = arr
End Sub
 
МВТ, Фродо, sv2013, Спасибо, ваши три варианта оказались лучшими
7/
8.
а с такими справился только МВТ
Изменено: next777pro - 22.06.2016 21:10:56
 
Цитата
МВТ написал: Как вариант, удаляет все
спасибо, великолепно
 
Юрий М, sv2013, Фродо, МВТ, Уважаемые, а как ошибки удалить #Н/Д

как сюда это приклеить
Код
Replace(Output, "#N/A", "")
Изменено: next777pro - 24.06.2016 12:33:51
 
Обсуждалось неоднократно. Посмотрите в сторону ЕСЛИОШИБКА()
 
Цитата
Юрий М написал: ЕСЛИОШИБКА()
в макрос впаять нужно, без формул
этот как дописать правильно
Код
Replace What:="#N/A", Replacement:=""
Изменено: next777pro - 26.06.2016 22:54:30
 
Я не знал, что нужно для макроса: полагал, что про формулы разговор.
Если Н/Д появляется после работы макроса, то ищите, где (из-за чего) эта самая ошибка возникает и не допускайте её.
 
Цитата
Юрий М написал: Если Н/Д появляется после работы макроса
пока не понял какая причина
дописал так, он по всему листу удаляет
ActiveSheet.UsedRange.Replace "#N/A", ""
а мне надо только J столбец
Код
Sub RazvertUgolov()
    Dim b(), i&, j&
    With Range("J2:J5000" & Cells(2, 1).End(xlDown))
        a = .Value
        For i = UBound(a, 1) To 1 Step -1
            If Not IsEmpty(a(i, 1)) Then S = Split(a(i, 1), "-"): Exit For
        Next
        ReDim b(1 To S(UBound(S)), 1 To 1)
        j = 1
        For i = 1 To UBound(a, 1)
            If IsEmpty(a(i, 1)) Then Exit For
            S = Split(a(i, 1), "-")
            If UBound(S) > 0 Then
                For k = S(0) To S(1)
                    b(j, 1) = k
                    j = j + 1
                Next
            Else
                b(j, 1) = S(0)
                j = j + 1
            End If
        Next
        .Cells(1).Resize(j) = b
    End With
ActiveSheet.UsedRange.Replace "#N/A", ""
End Sub
Изменено: next777pro - 26.06.2016 22:54:44
 
Правильно удаляет: Вы же сами указываете диапазон для обработки - активный лист. Укажите конкретно: например, range("J2:J100").
А вообще, это неправильно - устранять следствие, а не причину.
 
Юрий М, додумался я все таки и справился
спасибо
Код
Range("J2:J1000").Replace "#N/A", ""
 
Цитата
Юрий М написал: устранять следствие, а не причину
это я не знаю почему так, в чем причина
 
Так попробуйте найти: пройдите процедуру пошагово (F8) или поставьте точку останова на той строке кода, на которой происходит эта ошибка и проанализируйте состояние переменных.
 
Цитата
Юрий М написал:
пошагово (F8) или поставьте точку
мне кажется настолько далеко мои знания не затронуты, буду месяц так искать) пока пойму, где причина
на выходных может и попробую, спасибо
Изменено: next777pro - 24.06.2016 13:20:36
 
Почитайте эту статью (отлов ошибок и отладка кода).
Страницы: 1 2 След.
Наверх