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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2014, 15:46   #11
swordpig
Пользователь
 
Регистрация: 23.07.2014
Сообщений: 13
По умолчанию

Да, я уже так попробовал, посмотрев на логику внимательно.
Но теперь он утыкается в то, что если на следующей строке
Sheets(ActiveSheet.Index + 1).Name = "nulls" - он говорит subscript out of range

Ну даже ладно, если закомментим то, что новому листу за предыдущим дадут имя nulls, пусть это не важно.
Скрипт потом, на текущем листе ковыряясь сообщает не найденно ни одной ячейки, удовлетворяющей условиям.
Вот тут
Set rg = rg.SpecialCells(xlCellTypeConstants , xlTextValues)
Т.е. у нас в этом диапазоне текстового типа и нету. У нее формат числовой стоит, я сейчас посмотрел. т.е. Z7.37 какая имеет формат числовой

Последний раз редактировалось swordpig; 05.08.2014 в 15:58.
swordpig вне форума Ответить с цитированием
Старый 05.08.2014, 16:02   #12
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однако, погорячился (несколько раз)

сделайте так:
Код:
    Worksheets.Add after:=ActiveSheet
    ActiveSheet.Name = "nulls"
    Worksheets(ActiveSheet.Index - 1).Activate
    Dim rg As Range, i As Long, r As Long, c As Long
    Set rg = Range(Cells(7, 11), Cells(Rows.Count, 11).End(xlUp))
    Set rg = rg.SpecialCells(xlCellTypeConstants, xlTextValues)
    r = 1
    For i = 1 To rg.Areas.Count
      c = rg.Areas(i).Rows.Count
      rg.Areas(i).Offset(0, -2).Resize(c, 9).Copy Worksheets(rg.Parent.Index + 1).Cells(r, 1)
      r = r + c
    Next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.08.2014, 16:10   #13
swordpig
Пользователь
 
Регистрация: 23.07.2014
Сообщений: 13
По умолчанию

Ага, спасибо!
Оказывается надо было указать ему вернуться обратно на один лист!
Теперь я подгоню по данным, проверю, если вдруг еще вопросы возникнут, я задам тут еще, ладно?
Ну и отпишусь, как оно в итоге.
swordpig вне форума Ответить с цитированием
Старый 05.08.2014, 17:13   #14
swordpig
Пользователь
 
Регистрация: 23.07.2014
Сообщений: 13
По умолчанию

Отлично, все работает. Единственное, последний вопрос - как вставить, чтобы второй диапазон значений с Z не прилипал к первому снизу (как я разобрался, до конца листа перебираются все и кладуться именно текстовые строки по указанному интервалу. Значения не содержащие текста в диапазон не попадают), а ложился рядом массивом, например через 5 ячеек вправо от первого массива.
Т.е.
Z11 Z12 первый массив с Z до цифровых значений
Z21 Z22
... ...
Z51 Z52 второй массив с Z после цифровых значений
Z61 Z62

Становились
Z11 Z12 ____ Z51 Z52
Z21 Z22 ____ Z61 Z62


Как в цикл вставить проверку, что первый массив закончился, а теперь начался новый и его надо писать рядом с первым через 5 столбцов, допустим?
Мне просто надо делать действия с массивом до чисел и действия после значения чисел отдельно.

Последний раз редактировалось swordpig; 05.08.2014 в 17:23.
swordpig вне форума Ответить с цитированием
Старый 05.08.2014, 17:31   #15
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

опишите, как должны быть сложены данные и каккие данные нужны в отчете?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.08.2014, 17:45   #16
swordpig
Пользователь
 
Регистрация: 23.07.2014
Сообщений: 13
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
опишите, как должны быть сложены данные и каккие данные нужны в отчете?
Ну все как Вы сделали, только данные в файле для примера, который я Вам выкладывал, они начинаются с i:7 по q:91 (первый массив значений с Z)- ложатся на лист nulls с ячейки a1 по i85, а данные с i:3019 по q:3140 (второй массив значений с Z после нескольких тысяч числовых значений) - на тот же лист, только с O:1 по W:121.
И не плохо бы, чтобы ситуация, когда массив например 1 или 3 (т.е. не два, между которыми числовые значения) - выпадала в ошибку.


Разумеется, это я просто для наглядности написал. В разных файлах каоличество строк в каждом массиве может быть совершенно разным, потому и конкретные ссылки тут не укажешь.

Последний раз редактировалось swordpig; 05.08.2014 в 17:51.
swordpig вне форума Ответить с цитированием
Старый 05.08.2014, 18:03   #17
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так?
Код:
    Worksheets.Add after:=ActiveSheet
    ActiveSheet.Name = "nulls"
    Worksheets(ActiveSheet.Index - 1).Activate
    Dim rg As Range, i As Long
    Set rg = Range(Cells(7, 11), Cells(Rows.Count, 11).End(xlUp))
    Set rg = rg.SpecialCells(xlCellTypeConstants, xlTextValues)
    For i = 1 To rg.Areas.Count
      rg.Areas(i).Offset(0, -2).Resize(rg.Areas(i).Rows.Count, 9).Copy Worksheets(rg.Parent.Index + 1).Cells(1, i*10-9)
    Next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.08.2014, 19:56   #18
swordpig
Пользователь
 
Регистрация: 23.07.2014
Сообщений: 13
По умолчанию

Именно! Спасибо!
Долго пялился на конструкцию, оказалось все гениальное просто! Относительно, конечно.
Теперь наконец завершу скриптяку, которую ковырял не один месяц!
swordpig вне форума Ответить с цитированием
Старый 13.08.2014, 01:39   #19
swordpig
Пользователь
 
Регистрация: 23.07.2014
Сообщений: 13
По умолчанию

Еще небольшой вопрос - как протянуть формулу из ячейки M11 ниже по каждой ячейке в столбце М до строки, номер которой хранится в ячейке A1?
swordpig вне форума Ответить с цитированием
Старый 13.08.2014, 03:03   #20
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение диапазона ячеек с нефиксироваными границами Je11 Microsoft Office Excel 4 07.03.2013 18:36
Как сцепить данные с определенного диапазона ячеек через запятую Alex___ Microsoft Office Excel 5 21.01.2013 23:42
Создание формулы с вычислением среднего значения диапазона ячеек Buchhalter Microsoft Office Excel 16 02.04.2012 21:09
Выделение диапазона по условию тестовых значений ячеек as-is Microsoft Office Excel 1 08.03.2010 14:45
Складывание ячеек при достижение определенного значения Vladimir17M Microsoft Office Excel 6 08.02.2010 05:39