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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2013, 13:12   #1
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию Автоматически создать необходимое кол-во строк согласно указанному в ячейке

Вопрос 1:
Есть список файлов, который формируется в таблице, в названии файла есть цифра, показывающая количество листов в файле, необходимо вставить после каждой строчки с цифрой пустые строки равные цифре из строчки - 1 (см. пример)

Вопрос 2:
Как автоматически заполнить таблицу (см. пример лист "Исходный" Лист "Пример заполнения")

Спасибо. Очень поможет облегчить работу.
Вложения
Тип файла: rar Список чертежей1.rar (30.6 Кб, 12 просмотров)
lioon вне форума Ответить с цитированием
Старый 23.10.2013, 13:36   #2
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию

Возможно сложно сформулировал предыдущую задачу.
Попробовал упростить до минимума.
Важна идея, не могу сообразить как сделать.
Вложения
Тип файла: rar Уточнение.rar (6.9 Кб, 13 просмотров)
lioon вне форума Ответить с цитированием
Старый 23.10.2013, 13:46   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да в общем ничего сложного. И способов это реализовать макросом куча...
Но вот проблема - что как там на месте по факту из постановки задачи не понятно, поэтому практически делать как-то бестолково. Сделаешь - а зря, т.к. применять нельзя или неудобно.
Вот например сделать в этом примере кнопку с макросом, который делает из конкретного диапазона A3:B7 конкретный диапазон D13:E24 легко. Но ведь бестолково...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.10.2013, 13:57   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub AddRows()
  Dim r As Long
  For r = Cells(Rows.Count, 2).End(xlUp).Row To 3 Step -1
    If Cells(r, 2) > 1 And IsNumeric(Cells(r, 2)) Then
      Rows(r).Copy:  Cells(r + 1, 1).Resize(Cells(r, 2) - 1, 1).EntireRow.Insert
      Cells(r + 1, 1).Resize(Cells(r, 2) - 1, 1).ClearContents
    End If
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.10.2013, 14:32   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Код:
Option Explicit

Sub tt()
    Dim r As Range, a(), i&, ii&, x&

    Set r = [A3:B7]
    a = r.Value
    ReDim b(1 To Application.Sum(r.Columns(2)) + 1, 1 To 2)
    b(1, 2) = a(1, 2): x = 2
    For i = 2 To UBound(a)
        b(x, 1) = a(i, 1): b(x, 2) = a(i, 2)
        For ii = 1 To a(i, 2)
            b(x, 2) = a(i, 2): x = x + 1
        Next
    Next
    With [D13].Resize(UBound(b), 2)
        .Value = b
        .Borders.Weight = xlThin
    End With
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.10.2013, 15:32   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Игорь, ни для кого здесь не секрет, что мы с тобой плохие экстрасенсы.

Но даже среди двух плохих экстрасенсов можно выявить "лучшего". Сейчас ТС определит)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.10.2013, 16:07   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я думаю что победит дружба
Т.е. не применим ни один вариант.

Я так вообще всё делал по примеру. Но с прицелом на доработку двумя инпутбоксами типа 8
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.10.2013, 07:20   #8
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию

Спасибо! Вы хорошие экстрасенсы.
После небольшой доработки кода IgorGO:

Sub AddRows()
Dim r As Long
For r = Cells(Rows.Count, 3).End(xlUp).Row To 3 Step -1
If Cells(r, 3) > 1 And IsNumeric(Cells(r, 3)) Then
Rows(r).Copy: Cells(r, 3).Resize(Cells(r, 3) - 1, 3).EntireRow.Insert
Cells(r, 3).Resize(Cells(r, 3), 3).ClearContents
End If
Next
End Sub

получил то чего добивался. Спасибо!
lioon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение рисунка согласно данных в ячейке. Vikup Microsoft Office Excel 0 25.04.2012 00:10
Задачи на обработку строк: удалить каждую 3-ю букву, найти кол-во гласных, кол-во цифр в строке,совпадения в 2-х строках Ирина93 Паскаль, Turbo Pascal, PascalABC.NET 6 05.11.2011 22:10
как вывести необходимое кол-во строк sersh1 Microsoft Office Excel 1 30.09.2011 09:08
ListView. Автоматически создать столбецы и записать в них по 10 строк Shouldercannon Общие вопросы Delphi 1 04.03.2011 05:18
В ячейке проставить название месяца, согласно номеру листа kzld Microsoft Office Excel 5 06.10.2010 10:32