Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2014, 12:50   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Удалить ячейки из Нех массива

Всем привет, опять вопрос.
Есть массив в А-А от 1 - 529646
38F09FE538F09FE5
65534F4C2D654269
6E6465722D4C0000
0000A0E10000A0E1
Нужно удалить ячейки содержащие первые любые буквы, т. е. оставить только цифры и удалить пустые ячейки.
Рекодер
Код:
For x = 1 To 529646
    Cells.Find(What:="F", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
    Selection.ClearContents
Next
Меняю букву от А до F и всё как бы ОК, но как собрать в кучу, без пустых ячеек???
Бо просмотреть остаток - !!!!!
valerij вне форума Ответить с цитированием
Старый 21.11.2014, 12:59   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

нужно удалить ячейки содержащие букву в первой позиции или в любой?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.11.2014, 13:29   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
нужно удалить ячейки содержащие букву в первой позиции или в любой?
В любой позиции.
Вот например число
65534F4C2D654269

Есть первая буква F и удалить эту ячейку и не важно, что там ещё есть буквы.
Мне из массива нужно отсеять числа с буквами.

Последний раз редактировалось valerij; 21.11.2014 в 13:44.
valerij вне форума Ответить с цитированием
Старый 21.11.2014, 14:28   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub DelCharAndBlank()
  Dim r As Long, rg As Range, a
  Columns("A:A").NumberFormat = "@"
  r = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(1, 1).Resize(r, 1).TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
    FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array _
    (5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array _
    (12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1)), TrailingMinusNumbers:=True
  On Error Resume Next
  Set rg = Cells(1, 1).Resize(r, 16).SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow
  Application.Union(rg, rg).Delete
  
  r = Cells(Rows.Count, 1).End(xlUp).Row:  a = Cells(1, 1).Resize(r, 16).Value
  For r = 1 To r
    a(r, 1) = Join(Application.Index(a, r), "")
  Next
  Cells(1, 1).Resize(r - 1, 1).Value = a:  Range("B:P").ClearContents
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.11.2014, 14:52   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Sub DelCharAndBlank()
Игорь вот сам глянь, чито он, макрос - делает.

Игорь ты понял правильно?
Вот пример - данные
Код:
202053657269616C
3A20257300000000
0008101820283038
4048505860687078
800A0A0A0A0A0A0A
0A06060606050505
0505050504040404
0000000000000001
После выполнения - удалить с буквой
Код:
пустая яч.
пустая яч.
0008101820283038
4048505860687078
пустая яч.
пустая яч.
0505050504040404
0000000000000001
После выполнения - упорядочить.
Код:
0008101820283038
4048505860687078
0505050504040404
0000000000000001

Последний раз редактировалось valerij; 21.11.2014 в 19:21.
valerij вне форума Ответить с цитированием
Старый 21.11.2014, 15:23   #6
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

valerij, Если будет время и желание, то можете попробовать :

Код:
Private Sub Test()
    Dim iCount1&, iCount2&, iArr As Variant, Item As Variant
    iArr = Range(Cells(1), Cells(Rows.Count, 1).End(xlUp))
    
    For iCount1 = 1 To UBound(iArr)
        Item = iArr(iCount1, 1)
        If Not Item Like "*[A-z]*" Then 'Or? If IsNumeric(Item)
           iCount2 = iCount2 + 1
           iArr(iCount2, 1) = Item
        End If
    Next
    
    Columns(1).ClearContents '.Clear
    Cells(1).Resize(iCount2).NumberFormat = "@"
    Cells(1).Resize(iCount2) = iArr
End Sub
P.S. Если у ячеек столбца [A:A] уже установлен текстовый формат, то соответствующую строку в макросе можно удалить/закомментировать.

Последний раз редактировалось pashulka; 21.11.2014 в 15:28.
pashulka вне форума Ответить с цитированием
Старый 21.11.2014, 15:52   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от pashulka Посмотреть сообщение
можете попробовать .
Спасибо!!
СУПЕР!!!
valerij вне форума Ответить с цитированием
Старый 21.11.2014, 16:16   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

макрос из 8 этих строк
202053657269616C
3A20257300000000
0008101820283038
4048505860687078
800A0A0A0A0A0A0A
0A06060606050505
0505050504040404
0000000000000001

оставил 4-е этих:
0008101820283038
4048505860687078
0505050504040404
0000000000000001
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.11.2014, 16:44   #9
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

IgorGO, Вы использовали SpecialCells a этот метод имеет ограничения, которые, при таком количестве строк, вполне могут проявиться.
pashulka вне форума Ответить с цитированием
Старый 21.11.2014, 17:29   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

pashulka,

согласен - это заготовка. Профессионал, а именно такой статус у Валерия, несколькими уверенными движениями напильника подогнал бы ее строго под свою задачу.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить последний символ ячейки andre344 Microsoft Office Excel 10 14.09.2020 16:10
Как удалить из ячейки слово, содержащее.... Solny Microsoft Office Excel 12 09.01.2013 07:43
удалить строки содержащие определенные ячейки 123456789igor Общие вопросы Delphi 0 10.11.2012 00:15
По массивам, SOS! из целочисленного массива удалить из массива элементы, встречающиеся менее 3-х раз prelest' Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 22:37
Удалить лишние ячейки Ilya87 Microsoft Office Excel 8 25.02.2009 13:46