Доброго времени вам дорогие форумчане. Эксель знаю на пользовательском уровне и в глубину не копал. По работе приходится выполнять разные задачи в экселе и по этой причине я обращаюсь к вам. суть проблемы. есть пустой столбец ( сума срок миллион) необходимо проставить число один через каждые 60 строк. как можно это сделать автоматически?
Основная задача СКРЫВАТЬ СТРОКИ С ОПРЕДЕЛЕННЫМ ИНТЕРВАЛОМ - КАЖДЫЕ 29 СТОРОК ОСТАВЛЯЯ 30.
Очень нужна ваша помощь. понимаю что для гуру задача может быть примитивная, но для чайника невыполнимая.
прошу не отправлять меня на курсы и не советовать поискать на форуме. если есть ответ - напишите спасибо что потратили время на прочтение данного сообщения
Доброго времени вам дорогие форумчане. Эксель знаю на пользовательском уровне и в глубину не копал. По работе приходится выполнять разные задачи в экселе и по этой причине я обращаюсь к вам. суть проблемы. есть пустой столбец ( сума срок миллион) необходимо проставить число один через каждые 60 строк. как можно это сделать автоматически?
Основная задача СКРЫВАТЬ СТРОКИ С ОПРЕДЕЛЕННЫМ ИНТЕРВАЛОМ - КАЖДЫЕ 29 СТОРОК ОСТАВЛЯЯ 30.
Очень нужна ваша помощь. понимаю что для гуру задача может быть примитивная, но для чайника невыполнимая.
прошу не отправлять меня на курсы и не советовать поискать на форуме. если есть ответ - напишите спасибо что потратили время на прочтение данного сообщенияAlexander
Ну вот не обучен я макросам. если быть точным то строк 903000
есть опыт общения в разных форумах- есть такие раздражительные личности выучат одну программу и богами себя считают. Ну не работаю я в экселе просто иногда приходится.
Ну вот не обучен я макросам. если быть точным то строк 903000
есть опыт общения в разных форумах- есть такие раздражительные личности выучат одну программу и богами себя считают. Ну не работаю я в экселе просто иногда приходится.Alexander
Если иногда уже приходится - то думаю дальше будет только чаще... На миллион строк я бы делал макросом - создаём массив высотой в этот миллион, циклом ставим номера, выгружаем массив в свободный столбец. Пара минут написания кода, пара секунд работы.
[vba]
Code
Sub tt() Dim arr(1 To 903000, 1 To 1), i&, ii&
For i = 1 To UBound(arr) Step 60 ii = ii + 1 arr(i, 1) = ii Next Range("A1").Resize(UBound(arr), 1) = arr End Sub
[/vba] Но Вы должны как минимум знать, что такое макрос, как его использовать, как чуть подогнать под задачу... И диапазон (эти 903000) можно определить кодом, чтоб обработать именно всё, что нужно. Но для этого нужно видеть пример файла, его структуру (не нужно все строки )
Если иногда уже приходится - то думаю дальше будет только чаще... На миллион строк я бы делал макросом - создаём массив высотой в этот миллион, циклом ставим номера, выгружаем массив в свободный столбец. Пара минут написания кода, пара секунд работы.
[vba]
Code
Sub tt() Dim arr(1 To 903000, 1 To 1), i&, ii&
For i = 1 To UBound(arr) Step 60 ii = ii + 1 arr(i, 1) = ii Next Range("A1").Resize(UBound(arr), 1) = arr End Sub
[/vba] Но Вы должны как минимум знать, что такое макрос, как его использовать, как чуть подогнать под задачу... И диапазон (эти 903000) можно определить кодом, чтоб обработать именно всё, что нужно. Но для этого нужно видеть пример файла, его структуру (не нужно все строки )Hugo
ну вот об чем я и говорю, знающему человеку нужны секунды - не опытному дни. Я в автокаде тоже сложные задачи решаю а тут дуб дубом. столкнулся с проблемой и решить не могу сам. Основная проблема в том что есть огромный фаил ascii из него ( я полагаю там порядка 8 миллионов строк) так вот нужно от туда данные с шагом выдернуть. если интересно могу написать как я гемороюсь что бы данную операцию проделать. ( с учетом что в эксель можно только миллион строк воткнуть) теперь по теме вопроса. Все работает за что огромное спасибо. маленькое уточнение. мне не нужно увеличивать следующее число на 1. я удалил +1 в строке ii = ii + 1 и теперь макрос проставляет только 0
ну вот об чем я и говорю, знающему человеку нужны секунды - не опытному дни. Я в автокаде тоже сложные задачи решаю а тут дуб дубом. столкнулся с проблемой и решить не могу сам. Основная проблема в том что есть огромный фаил ascii из него ( я полагаю там порядка 8 миллионов строк) так вот нужно от туда данные с шагом выдернуть. если интересно могу написать как я гемороюсь что бы данную операцию проделать. ( с учетом что в эксель можно только миллион строк воткнуть) теперь по теме вопроса. Все работает за что огромное спасибо. маленькое уточнение. мне не нужно увеличивать следующее число на 1. я удалил +1 в строке ii = ii + 1 и теперь макрос проставляет только 0Alexander
Можно макросом выбирать в массив только нужные строки непосредственно из текстового файла, затем массив выгрузить на лист (можно и сразу на лист, но т.к. всего будет ~140000 - через массив будет быстрее).
Можно макросом выбирать в массив только нужные строки непосредственно из текстового файла, затем массив выгрузить на лист (можно и сразу на лист, но т.к. всего будет ~140000 - через массив будет быстрее).Hugo
Потому что у каждой ячейки есть ДВЕ координаты. Если объявить одномерный - его придётся перед выгрузкой транспонировать, что лишнее действие. А с миллионом оно скорее всего и не получится (может в 2010 эту проблему решили, не знаю...). Поэтому проще объявить двумерный, заполнить двумерный, выгрузить двумерный. Сколько столбцов - не важно.
Потому что у каждой ячейки есть ДВЕ координаты. Если объявить одномерный - его придётся перед выгрузкой транспонировать, что лишнее действие. А с миллионом оно скорее всего и не получится (может в 2010 эту проблему решили, не знаю...). Поэтому проще объявить двумерный, заполнить двумерный, выгрузить двумерный. Сколько столбцов - не важно.Hugo
Serge_007, - да действительно все 8 не нужны но единственная программа которая открыла фаил ascii это просмоторщик в тотал командоре без возможности редактирования.
Hugo, - эта реально можно сделать? у меня ascii фаил весит 700 мб. если возможно из него выдрать значения с шагом Х на прямую в эксель это вообще будет супер
в данный момент я делаю так - в тотал командоре разбиваю фаил по 25 мб потом открываю части и копирую в эксель . а потом уже с помощью предложенного макроса скрываю не нужные мне строки.
Serge_007, - да действительно все 8 не нужны но единственная программа которая открыла фаил ascii это просмоторщик в тотал командоре без возможности редактирования.
Hugo, - эта реально можно сделать? у меня ascii фаил весит 700 мб. если возможно из него выдрать значения с шагом Х на прямую в эксель это вообще будет супер
в данный момент я делаю так - в тотал командоре разбиваю фаил по 25 мб потом открываю части и копирую в эксель . а потом уже с помощью предложенного макроса скрываю не нужные мне строки.Alexander
700 мб не обрабатывал, 20-30 было. Думаю что и 700 можно прочитать. Дайте небольшой кусок файла - отрежьте тоталом ~100 кб текста, ЗААРХИВИРУЙТЕ и покажите (если личное/секретное - шлите на почту или давайте 20 строк изменённых в блокноте данных). Я смогу скорее всего вечером глянуть - но думаю другие сделают раньше, там ничего сложного нет.
700 мб не обрабатывал, 20-30 было. Думаю что и 700 можно прочитать. Дайте небольшой кусок файла - отрежьте тоталом ~100 кб текста, ЗААРХИВИРУЙТЕ и покажите (если личное/секретное - шлите на почту или давайте 20 строк изменённых в блокноте данных). Я смогу скорее всего вечером глянуть - но думаю другие сделают раньше, там ничего сложного нет.Hugo
Хотя вот попробуйте - вариант не быстрый, но рабочий:
[vba]
Code
Option Explicit
Sub readtxt() Dim i&, ii&, x$, strFilePath$, objTS Application.ScreenUpdating = False
strFilePath = "C:\test.txt" Set objTS = CreateObject("Scripting.FileSystemObject").OpenTextFile(strFilePath, 1)
Do Until objTS.AtEndOfStream x = objTS.Readline i = i + 1 If i Mod 8 = 0 Then Application.StatusBar = "Read line " & i ii = ii + 1 Cells(ii, 1) = x End If Loop
objTS.Close Set objTS = Nothing Application.StatusBar = False Application.ScreenUpdating = True End Sub
[/vba]
Хотя вот попробуйте - вариант не быстрый, но рабочий:
[vba]
Code
Option Explicit
Sub readtxt() Dim i&, ii&, x$, strFilePath$, objTS Application.ScreenUpdating = False
strFilePath = "C:\test.txt" Set objTS = CreateObject("Scripting.FileSystemObject").OpenTextFile(strFilePath, 1)
Do Until objTS.AtEndOfStream x = objTS.Readline i = i + 1 If i Mod 8 = 0 Then Application.StatusBar = "Read line " & i ii = ii + 1 Cells(ii, 1) = x End If Loop
objTS.Close Set objTS = Nothing Application.StatusBar = False Application.ScreenUpdating = True End Sub
Чтоб положить файлик - нужно зарегистрироваться. Но Вы можете воспользоваться любым файлообменником. Другое дело, что не с любого файлообменника мы (например лично я) можем в рабочее время качать.
Чтоб положить файлик - нужно зарегистрироваться. Но Вы можете воспользоваться любым файлообменником. Другое дело, что не с любого файлообменника мы (например лично я) можем в рабочее время качать.Hugo
Hugo, простите а не могу понять где в макросе указывается шаг
еще попутно вопрос если я имею в ячейке текст следующего формата
55681242.39,505598694.85,-25.47 можно ли его разбеть по ячейкам с учетом разделения запятой? средствами экселя. я в таких случаях копирую ч блакнот потом вставляю в эксель и использую мастер вставки
Hugo, простите а не могу понять где в макросе указывается шаг
еще попутно вопрос если я имею в ячейке текст следующего формата
55681242.39,505598694.85,-25.47 можно ли его разбеть по ячейкам с учетом разделения запятой? средствами экселя. я в таких случаях копирую ч блакнот потом вставляю в эксель и использую мастер вставкиAlexander
Сообщение отредактировал Alexander - Четверг, 18.10.2012, 13:47
[/vba] Формат - это чтоб Эксель видел числа как числа, а не как текст. Ну и там ещё разделители нужно уточнить - может быть в Экселе десятичный тоже запятая, а не точка. Это как у кого... Хотя формат можно и потом преобразовать - выделяем по одному столбцы целиком и данные-текст по столбцам-готово.
Строку [vba]
Code
Range(Cells(ii, 1), Cells(ii, 3)) = Split(x, ",")
[/vba]вместо строки [vba]
Code
Cells(ii, 1) = x
[/vba] Формат - это чтоб Эксель видел числа как числа, а не как текст. Ну и там ещё разделители нужно уточнить - может быть в Экселе десятичный тоже запятая, а не точка. Это как у кого... Хотя формат можно и потом преобразовать - выделяем по одному столбцы целиком и данные-текст по столбцам-готово.Hugo