|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.05.2011, 00:45 | #1 |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Как переменную преобразовать в строку?
Здравствуйте,
столкнулся с проблемой - не могу преобразовать переменную X = Range("A50:A1048576") в строку..... Есть диапазон ячеек А50:А1048576, заполненный числами, для того чтобы записать данные в текстовый файл, надо все данные преобразовать в строковую переменную. Есть работающий вариант 1.Загнать данные в массив (по средствам цикла) - порядка 8с по времени 2. Из массива создаю строковую переменную 3.Write #FNUM, , MyString - записываю в файл Долго по времени, пытаюсь ускорить процесс 1. X = Range("A50:A1048576") - присваиваю весь диапазон данных одной переменной (по времени менее 1 с) Выгрыш по времени очевиден!!!! 2. ???????????????????? Тут возникает проблема. Как преобразовать X = Range("A50:A1048576") в текстовую переменную? P.S. - Сохранение в бинарном виде не подходит, нужно чтобы в файле были именно значения (данные столбца А), разделенные к примеру запятой. Спасибо. Последний раз редактировалось clever77; 16.05.2011 в 00:50. |
16.05.2011, 01:00 | #2 |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
а почему бы просто не сохранить как текстовый файл?
а затем лишние строки удалить?
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
16.05.2011, 01:08 | #3 | |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Цитата:
типа того ActiveWorkbook.SaveAs "C:\test.txt", xlText
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
|
16.05.2011, 01:31 | #4 |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
наверное не понял вопроса сначала
можно так но есть ограничения в 65536 строк для Transpose но это будет побыстрее Код:
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
16.05.2011, 01:47 | #5 |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Код:
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
Последний раз редактировалось R Dmitry; 16.05.2011 в 01:55. |
16.05.2011, 01:49 | #6 |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Честно говоря про такой вариант я даже и не думал.... Сказывается не хватка опыта.
Да я уже попробывал.... Наверное можно .... Надо будет только подумать как распологать данные на листе..... и как их потом считывать для анализа.... Буду думать в этом направлении Да уж - век живи, век учись...... СПАСИБО. Правда вопрос как преобразовать переменную X в текст остается в силе.... Может кто знает.....Если удастся разобраться как работать с такой переменной, то в будущем это очень пригодится...., т.к. это коротко в написании и быстро по времени исполнения. Очень удобно. Пока знаю как копировать быстро большой объем данных X = Range("A50:A1048576") Range("X2").Resize(1048526).Value = X Копирует все значения диапазона A50:A1048576 в столбец X начиная с ячейки X2 - Быстро и удобно и никаких циклов - красота!!! |
16.05.2011, 01:59 | #7 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
аналогично:
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
16.05.2011, 01:59 | #8 |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
смотрите мой пост последний
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
16.05.2011, 03:40 | #9 |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Помоему не совсем так
Если а() массив, то Вы можете написать Cells(25, 40) = а(3) - т.е присвоите ячейке 4 элемент массива Если А=Range("A1:A1048576"), то запись Cells(25, 40) = А(3) - будет недопустима..., т.е после присвоения переменной А диапазона Range, выбрать произвольный элемент из такой переменной невозможно (кроме первого, во всяком случае я такого способа не знаю) Можно исп Resize Range("X2").Resize(N).Value = A ,где N число элементов с 1 по N И если N=3 , то в ячейке X2 будет 1 элемент, в ячейке Х3 будет 2 и в ячеке Х4 будет 3 элемент Если а() массив, то MyString = Join(а, [","]) работает (без ограничения на размер 65536) в Excel 2010 Если А=Range, то MyString = Join(А, [","]) не работает Нужно уже писать Join(Application.Transpose(A), ",") Так что на мой взгляд это не совсем аналогия Последний раз редактировалось clever77; 16.05.2011 в 04:28. Причина: дополнение |
16.05.2011, 08:25 | #10 | |
Форумчанин
Регистрация: 21.11.2010
Сообщений: 326
|
Цитата:
Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
столбец преобразовать в строку | 0mega | Microsoft Office Excel | 6 | 03.02.2010 07:29 |
Как при нажатии на строку в Listbox передавать нажатую строку в переменную | Михаил Юрьевич | Общие вопросы Delphi | 5 | 16.03.2009 12:59 |
Как сохранить строку в регистр или переменную | Demonidze | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 10.02.2009 19:52 |
Как преобразовать строку типа "яяя ччч" в %D1%D1%D1%20%DE%DE%DE | kkkggg | PHP | 2 | 12.09.2007 13:33 |
Как преобразовать UINT в строку? | Сильванович Михаил | Общие вопросы C/C++ | 2 | 12.07.2007 09:58 |