Обработка массива к определенному виду
ant6729
Дата: Четверг, 02.06.2016, 12:08 |
Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
Добрый день, есть необработанный массив "а" может идти вниз до бесконечности или до 5000 строк.... и вид, к которому его нужно привести "б". Прошу подсказать формулу или макрос, если такие имеются, чтобы это сделать, спасибо.
Добрый день, есть необработанный массив "а" может идти вниз до бесконечности или до 5000 строк.... и вид, к которому его нужно привести "б". Прошу подсказать формулу или макрос, если такие имеются, чтобы это сделать, спасибо. ant6729
Ответить
Сообщение Добрый день, есть необработанный массив "а" может идти вниз до бесконечности или до 5000 строк.... и вид, к которому его нужно привести "б". Прошу подсказать формулу или макрос, если такие имеются, чтобы это сделать, спасибо. Автор - ant6729 Дата добавления - 02.06.2016 в 12:08
_Boroda_
Дата: Четверг, 02.06.2016, 12:21 |
Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6479
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Такой макрос нарисовался [vba]Код
Sub tt() Application.ScreenUpdating = 0 r1_ = Range("A" & Rows.Count).End(3).Row With Range("A1:F" & r1_) .Replace What:="0", Replacement:="" .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End With End Sub
[/vba]
Такой макрос нарисовался [vba]Код
Sub tt() Application.ScreenUpdating = 0 r1_ = Range("A" & Rows.Count).End(3).Row With Range("A1:F" & r1_) .Replace What:="0", Replacement:="" .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End With End Sub
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Такой макрос нарисовался [vba]Код
Sub tt() Application.ScreenUpdating = 0 r1_ = Range("A" & Rows.Count).End(3).Row With Range("A1:F" & r1_) .Replace What:="0", Replacement:="" .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End With End Sub
[/vba] Автор - _Boroda_ Дата добавления - 02.06.2016 в 12:21
ant6729
Дата: Четверг, 02.06.2016, 12:33 |
Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
вы что их, каждый день пишете... почему так быстро... спасибо огромное!!! PS a1 заменил на b1) мне надо было нумерацию сохранить
вы что их, каждый день пишете... почему так быстро... спасибо огромное!!! PS a1 заменил на b1) мне надо было нумерацию сохранить ant6729
Ответить
Сообщение вы что их, каждый день пишете... почему так быстро... спасибо огромное!!! PS a1 заменил на b1) мне надо было нумерацию сохранить Автор - ant6729 Дата добавления - 02.06.2016 в 12:33
_Boroda_
Дата: Четверг, 02.06.2016, 12:37 |
Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6479
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Ну да. Н только лучше еще и дополнить проверку на целиковую ячейку [vba]Код
With Range("B1:F" & r1_) .Replace What:="0", Replacement:="", LookAt:=xlWhole
[/vba]
Ну да. Н только лучше еще и дополнить проверку на целиковую ячейку [vba]Код
With Range("B1:F" & r1_) .Replace What:="0", Replacement:="", LookAt:=xlWhole
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Ну да. Н только лучше еще и дополнить проверку на целиковую ячейку [vba]Код
With Range("B1:F" & r1_) .Replace What:="0", Replacement:="", LookAt:=xlWhole
[/vba] Автор - _Boroda_ Дата добавления - 02.06.2016 в 12:37
Manyasha
Дата: Четверг, 02.06.2016, 12:58 |
Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
Еще один вариант, через массивы: [vba]Код
Sub test() Application.ScreenUpdating = 0 Dim lr&, arr, res() lr = Cells(Rows.Count, 1).End(xlUp).Row ReDim res(lr - 1, 5) arr = Range("a1:f" & lr).Value For i = 1 To UBound(arr) k = 0 For j = 1 To UBound(arr, 2) If arr(i, j) <> 0 Then res(i - 1, k) = arr(i, j): k = k + 1 Next j Next i 'Куда выводим [a1].Resize(lr, 6) = res End Sub
[/vba]
Еще один вариант, через массивы: [vba]Код
Sub test() Application.ScreenUpdating = 0 Dim lr&, arr, res() lr = Cells(Rows.Count, 1).End(xlUp).Row ReDim res(lr - 1, 5) arr = Range("a1:f" & lr).Value For i = 1 To UBound(arr) k = 0 For j = 1 To UBound(arr, 2) If arr(i, j) <> 0 Then res(i - 1, k) = arr(i, j): k = k + 1 Next j Next i 'Куда выводим [a1].Resize(lr, 6) = res End Sub
[/vba] Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение Еще один вариант, через массивы: [vba]Код
Sub test() Application.ScreenUpdating = 0 Dim lr&, arr, res() lr = Cells(Rows.Count, 1).End(xlUp).Row ReDim res(lr - 1, 5) arr = Range("a1:f" & lr).Value For i = 1 To UBound(arr) k = 0 For j = 1 To UBound(arr, 2) If arr(i, j) <> 0 Then res(i - 1, k) = arr(i, j): k = k + 1 Next j Next i 'Куда выводим [a1].Resize(lr, 6) = res End Sub
[/vba] Автор - Manyasha Дата добавления - 02.06.2016 в 12:58
китин
Дата: Четверг, 02.06.2016, 13:29 |
Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация:
1073
±
Замечаний:
0% ±
Excel 2007;2010;2016
можно поспрашиваю? [vba]Код
lr = Cells(Rows.Count, 1).End(xlUp).Row
[/vba] насколько я понимаю(а понимаю я мало) эта строка определяет диапазон заполненных ячеек в 1 столбце так? [vba][/vba] это у нас весь диапазон ячеек в 1 столбце [vba][/vba]определяет последнюю заполненную ячейку.То есть если я нарисую вот так [vba]Код
lr = Cells(1,Column.Count).End(xlToLeft).Column
[/vba] я найду последнюю заполненную ячейку в строке 1? а до этого присвоить переменной lr значение Long
можно поспрашиваю? [vba]Код
lr = Cells(Rows.Count, 1).End(xlUp).Row
[/vba] насколько я понимаю(а понимаю я мало) эта строка определяет диапазон заполненных ячеек в 1 столбце так? [vba][/vba] это у нас весь диапазон ячеек в 1 столбце [vba][/vba]определяет последнюю заполненную ячейку.То есть если я нарисую вот так [vba]Код
lr = Cells(1,Column.Count).End(xlToLeft).Column
[/vba] я найду последнюю заполненную ячейку в строке 1? а до этого присвоить переменной lr значение Long китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Сообщение отредактировал китин - Четверг, 02.06.2016, 13:32
Ответить
Сообщение можно поспрашиваю? [vba]Код
lr = Cells(Rows.Count, 1).End(xlUp).Row
[/vba] насколько я понимаю(а понимаю я мало) эта строка определяет диапазон заполненных ячеек в 1 столбце так? [vba][/vba] это у нас весь диапазон ячеек в 1 столбце [vba][/vba]определяет последнюю заполненную ячейку.То есть если я нарисую вот так [vba]Код
lr = Cells(1,Column.Count).End(xlToLeft).Column
[/vba] я найду последнюю заполненную ячейку в строке 1? а до этого присвоить переменной lr значение Long Автор - китин Дата добавления - 02.06.2016 в 13:29
Manyasha
Дата: Четверг, 02.06.2016, 13:43 |
Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
Игорь, все правильно) Аналогия с ручными действиями такая: выделяем последнюю ячейку внизу (или справа) листа, нажимаем ctrl+shift+стрелка вверх (или влево).присвоить переменной lr значение Long
Для столбцов и integer хватит.
Игорь, все правильно) Аналогия с ручными действиями такая: выделяем последнюю ячейку внизу (или справа) листа, нажимаем ctrl+shift+стрелка вверх (или влево).присвоить переменной lr значение Long
Для столбцов и integer хватит. Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение Игорь, все правильно) Аналогия с ручными действиями такая: выделяем последнюю ячейку внизу (или справа) листа, нажимаем ctrl+shift+стрелка вверх (или влево).присвоить переменной lr значение Long
Для столбцов и integer хватит. Автор - Manyasha Дата добавления - 02.06.2016 в 13:43
китин
Дата: Четверг, 02.06.2016, 13:47 |
Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация:
1073
±
Замечаний:
0% ±
Excel 2007;2010;2016
Марина спасибо.Ясно. Посмотри плз мою тему, которую я поднял
Марина спасибо.Ясно. Посмотри плз мою тему, которую я поднял китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Ответить
Сообщение Марина спасибо.Ясно. Посмотри плз мою тему, которую я поднял Автор - китин Дата добавления - 02.06.2016 в 13:47
_Boroda_
Дата: Четверг, 02.06.2016, 13:51 |
Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6479
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Если словами Cells(Rows.Count, 1) - встаем в ячейку первого столбца и строки, равной количеству строк Cells(Rows.Count, 1).End(xlUp) - жмем там Контрл Стрелка Вверх lr = Cells(Rows.Count, 1).End(xlUp).Row - присваиваем переменной тот номер строки, в которой оказалисьа до этого присвоить переменной lr значение Long
Игорь, ты, наверное, про тип данных переменной?
Если словами Cells(Rows.Count, 1) - встаем в ячейку первого столбца и строки, равной количеству строк Cells(Rows.Count, 1).End(xlUp) - жмем там Контрл Стрелка Вверх lr = Cells(Rows.Count, 1).End(xlUp).Row - присваиваем переменной тот номер строки, в которой оказалисьа до этого присвоить переменной lr значение Long
Игорь, ты, наверное, про тип данных переменной? _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Если словами Cells(Rows.Count, 1) - встаем в ячейку первого столбца и строки, равной количеству строк Cells(Rows.Count, 1).End(xlUp) - жмем там Контрл Стрелка Вверх lr = Cells(Rows.Count, 1).End(xlUp).Row - присваиваем переменной тот номер строки, в которой оказалисьа до этого присвоить переменной lr значение Long
Игорь, ты, наверное, про тип данных переменной? Автор - _Boroda_ Дата добавления - 02.06.2016 в 13:51
ant6729
Дата: Суббота, 13.08.2016, 10:02 |
Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
Кто подскажет, в чем может быть дело? Так и в первом варианте решения, только с r1 и во втором с i...
Кто подскажет, в чем может быть дело? Так и в первом варианте решения, только с r1 и во втором с i... ant6729
Ответить
Сообщение Кто подскажет, в чем может быть дело? Так и в первом варианте решения, только с r1 и во втором с i... Автор - ant6729 Дата добавления - 13.08.2016 в 10:02
_Boroda_
Дата: Суббота, 13.08.2016, 10:24 |
Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6479
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Сотрите первую строку - "оптион ... ". Ее наличие обязывает Вас объявлять все переменные.
Сотрите первую строку - "оптион ... ". Ее наличие обязывает Вас объявлять все переменные. _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Сотрите первую строку - "оптион ... ". Ее наличие обязывает Вас объявлять все переменные. Автор - _Boroda_ Дата добавления - 13.08.2016 в 10:24
ant6729
Дата: Суббота, 13.08.2016, 10:25 |
Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
Ура... [vba]Код
Sub Макрос2() ' ' Макрос2 Макрос ' Columns("A:F").Select Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False With Range("A:F") .Replace What:="0", Replacement:="" .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End With End Sub
[/vba] Но все равно не понял, почему VBA ругается...
Ура... [vba]Код
Sub Макрос2() ' ' Макрос2 Макрос ' Columns("A:F").Select Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False With Range("A:F") .Replace What:="0", Replacement:="" .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End With End Sub
[/vba] Но все равно не понял, почему VBA ругается... ant6729
Ответить
Сообщение Ура... [vba]Код
Sub Макрос2() ' ' Макрос2 Макрос ' Columns("A:F").Select Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False With Range("A:F") .Replace What:="0", Replacement:="" .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End With End Sub
[/vba] Но все равно не понял, почему VBA ругается... Автор - ant6729 Дата добавления - 13.08.2016 в 10:25
ant6729
Дата: Суббота, 13.08.2016, 10:27 |
Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
От оно че...так... попробую стереть... ок, спасибо)
От оно че...так... попробую стереть... ок, спасибо) ant6729
Ответить
Сообщение От оно че...так... попробую стереть... ок, спасибо) Автор - ant6729 Дата добавления - 13.08.2016 в 10:27
ant6729
Дата: Суббота, 13.08.2016, 10:30 |
Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
Ну, да, без option explicit работает....
Ну, да, без option explicit работает.... ant6729
Ответить
Сообщение Ну, да, без option explicit работает.... Автор - ant6729 Дата добавления - 13.08.2016 в 10:30