Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] раздублирование строк

Ответить
Настройки темы
2010 - [решено] раздублирование строк

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xlsx даты.xlsx
(20.4 Kb, 3 просмотров)
Добрый день. извините за беспокойство, но снова требуется помощь. Сейчас вопрос стоит как раздублировать строки:
Вот исходный файл

дата, кол-во наблюдений, Var1
01.01.2013 25 30,37

есть дата, есть значение наблюдений и значение переменной (их там будет var1,var2,var3)
Нужно раздублировать строки на значение количества наблюдений. Например у нас 25 наблюдений значит
25 дублированных строк
дата кол-во наблюдений Var1
01.01.2013 25 30,37

01.01.2013 25 30,37


01.01.2013 25 30,37


01.01.2013 25 30,37


01.01.2013 25 30,37
...
...

01.01.2013 25 30,37

следующая дата имеет количество наблюдений 2957
значит 2957 строк
02.01.2013 2957 30,37
02.01.2013 2957 30,37
02.01.2013 2957 30,37
02.01.2013 2957 30,37
02.01.2013 2957 30,37
02.01.2013 2957 30,37
02.01.2013 2957 30,37
...
...
02.01.2013 2957 30,37
и так далее
Потом это записать в txt файл, т.к. в итоге должно получиться 2577473
Помогите ,пожалуйста

Отправлено: 14:18, 12-11-2015

 

Динохромный


Contributor


Сообщения: 703
Благодарности: 320

Профиль | Отправить PM | Цитировать


golovatov, насколько я понимаю - вы хотите скопировать каждую столько раз, сколько написано в ячейке второго столбца на каждой строчке?
Цитата golovatov:
в итоге должно получиться 2577473 »
2577473 - это сумма всех значений по столбцу 2, верно?
попробуйте такой код, оговорки - во втором столбце должна обязательно стоять цифра (иначе строчка будет пропущена), значение в txt файле разделяются знаком ";", конечный файл сохраняется по адресу "C:/1.txt". Полностью вашу таблицу не прогонял - стало скучно когда txt файл весил около 145мБт.
код
Код: Выделить весь код
Public Sub xls_to_txt()

Dim DataCell As Range
Dim DataSheet As Worksheet
Dim i As Long
Set FSO = CreateObject("scripting.filesystemobject")
Set ts = FSO.CreateTextFile("C:/1.txt", True, True)

Set DataSheet = ActiveSheet

For Each DataCell In Intersect(DataSheet.UsedRange, DataSheet.Columns(1))

    If IsNumeric(DataCell.Offset(0, 1).Value) Then
    
        For i = 1 To DataCell.Offset(0, 1).Value
            ts.Write Trim(DataCell.Value & ";")
            ts.Write Trim(DataCell.Offset(0, 1).Value & ";")
            ts.Write Trim(DataCell.Offset(0, 2).Value & Chr(13))
        Next i
        
        
    End If
Next DataCell
ts.Close
Set ts = Nothing
Set DataSheet = Nothing
Set FSO = Nothing
Set DataCell = Nothing
End Sub

golovatov, а Вы уверены, что Вам нужно именно это? Проблему этим копированием Вы какую решаете?

Последний раз редактировалось a_axe, 13-11-2015 в 16:20.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:27, 12-11-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Снимок.JPG
(136.0 Kb, 3 просмотров)

Цитата a_axe:
насколько я понимаю - вы хотите скопировать каждую столько раз, сколько написано в ячейке второго столбца на каждой строчке? »
верно
Цитата a_axe:
2577473 - это сумма всех значений по столбцу 2, верно? »
да

а можно сделать ,чтобы сами строчки не двоились, как на рисунке
а было просто
01.01.2013;25;30,37

Последний раз редактировалось golovatov, 12-11-2015 в 18:15.


Отправлено: 18:08, 12-11-2015 | #3


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


а тут видите
01.01.2013;25;30,3701.01.2013;25;30,37.

они встолбик должны идти
вот так
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
01.01.2013;25;30,37
02.01.2013;2957;30,37

Последний раз редактировалось golovatov, 12-11-2015 в 18:20.


Отправлено: 18:14, 12-11-2015 | #4


Динохромный


Contributor


Сообщения: 703
Благодарности: 320

Профиль | Отправить PM | Цитировать


в коде замените Chr(13) на точку с запятой в кавычках - чтоб было так же, как в конце строчки на одну выше.

-------
[Форум Word и Excel] - [Как запустить Word, Excel и Outlook в безопасном режиме?] - [Как удалить шаблон Word Normal.dotm?]


Отправлено: 18:16, 12-11-2015 | #5


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Снимок2.jpg
(520.0 Kb, 3 просмотров)

что-то не помогло, я сделал как Вы сказали
ts.Write Trim(DataCell.Offset(0, 2).Value & ";")
но вот результат
теперь тут 3333 строки в csv файле, и все значения не в столбиках

Отправлено: 18:47, 12-11-2015 | #6


Динохромный


Contributor


Сообщения: 703
Благодарности: 320

Профиль | Отправить PM | Цитировать


golovatov, до того как вы отредактировали свой пост было непонятно, что вы имеете ввиду.
У меня изначально результат виден столбиком.
Поставьте бесплатный продвинутый аналог блокнота AkelPad и откройте через него, используя первоначальный код.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:06, 12-11-2015 | #7


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Да с этим блокнотом все хорошо, но почему штатный блокнот не работает? В любом случае, Вы очень выручили.

Отправлено: 12:34, 13-11-2015 | #8


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Только вот он дублирует строки только для одной переменной. у меня их 2
дата.кол-во, var1 и var2
я получаю на выходе
дата.кол-во, var1

Отправлено: 14:43, 13-11-2015 | #9


Динохромный


Contributor


Сообщения: 703
Благодарности: 320

Профиль | Отправить PM | Цитировать


Цитата golovatov:
значение переменной (их там будет var1,var2,var3) »
В самом деле, этот момент я изначально упустил из виду. Код изменится вот так (количество переменных теперь любое):
Код
Код: Выделить весь код
Public Sub xls_used_to_txt()

Dim DataCell As Range
Dim DataSheet As Worksheet
Dim i As Long, n As Integer, j As Integer
Set FSO = CreateObject("scripting.filesystemobject")
Set ts = FSO.CreateTextFile("C:/1.txt", True, True)

Set DataSheet = ActiveSheet
n = DataSheet.UsedRange.Columns.Count - 1

For Each DataCell In Intersect(DataSheet.UsedRange, DataSheet.Columns(1))

    If IsNumeric(DataCell.Offset(0, 1).Value) Then
    
        For i = 1 To DataCell.Offset(0, 1).Value
            ts.Write Trim(DataCell.Value & ";")
                For j = 1 To n
                    ts.Write Trim(DataCell.Offset(0, j).Value & ";")
                Next j
            ts.Write Trim(Chr(13))
        Next i
        
        
    End If
Next DataCell
ts.Close
Set ts = Nothing
Set DataSheet = Nothing
Set FSO = Nothing
Set DataCell = Nothing
End Sub

-------
[Форум Word и Excel] - [Как запустить Word, Excel и Outlook в безопасном режиме?] - [Как удалить шаблон Word Normal.dotm?]


Последний раз редактировалось a_axe, 13-11-2015 в 16:19.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:05, 13-11-2015 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] раздублирование строк

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Обьеденение строк gen0m.rsw Скриптовые языки администрирования Windows 1 18-05-2015 09:28
CMD/BAT - удаление строк drone4888 Скриптовые языки администрирования Windows 2 09-08-2014 19:01
Любой язык - Обрезание строк vision-d Скриптовые языки администрирования Windows 1 07-04-2014 10:59
CMD/BAT - Поиск слова в тексте, удаление строки, удаление 8 строк выше и 3 строк ниже Alk-13 Скриптовые языки администрирования Windows 0 10-02-2012 18:06
VBA - Обработка строк Наташок Программирование и базы данных 2 29-12-2010 10:10




 
Переход