|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] раздублирование строк |
|
|
2010 - [решено] раздублирование строк
|
Новый участник Сообщения: 11 |
Добрый день. извините за беспокойство, но снова требуется помощь. Сейчас вопрос стоит как раздублировать строки:
Вот исходный файл дата, кол-во наблюдений, 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 |
Динохромный Сообщения: 703
|
Профиль | Отправить PM | Цитировать golovatov, насколько я понимаю - вы хотите скопировать каждую столько раз, сколько написано в ячейке второго столбца на каждой строчке?
Цитата golovatov:
попробуйте такой код, оговорки - во втором столбце должна обязательно стоять цифра (иначе строчка будет пропущена), значение в 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
|
Профиль | Отправить PM | Цитировать Цитата a_axe:
Цитата a_axe:
а можно сделать ,чтобы сами строчки не двоились, как на рисунке а было просто 01.01.2013;25;30,37 |
||
Последний раз редактировалось golovatov, 12-11-2015 в 18:15. Отправлено: 18:08, 12-11-2015 | #3 |
Новый участник Сообщения: 11
|
Профиль | Отправить 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 |
Динохромный Сообщения: 703
|
Профиль | Отправить PM | Цитировать в коде замените Chr(13) на точку с запятой в кавычках - чтоб было так же, как в конце строчки на одну выше.
|
|
------- Отправлено: 18:16, 12-11-2015 | #5 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать что-то не помогло, я сделал как Вы сказали
ts.Write Trim(DataCell.Offset(0, 2).Value & ";") но вот результат теперь тут 3333 строки в csv файле, и все значения не в столбиках |
Отправлено: 18:47, 12-11-2015 | #6 |
Динохромный Сообщения: 703
|
Профиль | Отправить PM | Цитировать golovatov, до того как вы отредактировали свой пост было непонятно, что вы имеете ввиду.
У меня изначально результат виден столбиком. Поставьте бесплатный продвинутый аналог блокнота AkelPad и откройте через него, используя первоначальный код. |
Отправлено: 20:06, 12-11-2015 | #7 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Да с этим блокнотом все хорошо, но почему штатный блокнот не работает? В любом случае, Вы очень выручили.
|
Отправлено: 12:34, 13-11-2015 | #8 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Только вот он дублирует строки только для одной переменной. у меня их 2
дата.кол-во, var1 и var2 я получаю на выходе дата.кол-во, var1 |
Отправлено: 14:43, 13-11-2015 | #9 |
Динохромный Сообщения: 703
|
Профиль | Отправить PM | Цитировать Цитата golovatov:
Код
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 |
|
------- Последний раз редактировалось a_axe, 13-11-2015 в 16:19. Отправлено: 15:05, 13-11-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|