Страницы: Пред. 1 2 3 След.
RSS
Пропадают нули при работе с числами, у которых слева "0"
 
Есть ограничения самого Excel. Транспонировать более 16 384 строк в столбцы Вы не сможете, т.к. столбцы кончатся.
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Есть  ограничения самого Excel . Транспонировать более 16 384 строк в столбцы Вы не сможете, т.к. столбцы кончатся.
Так я не транспонирую 16384 строки, я транспонирую около 1200 строк, при этом неважно сколько строк вы транспонируете, глюк вылизает именно на кол-ве элементов более 65535.

PS: Вы сами писали, что ждали от меня файл-пример 2 недели, сейчас я вложил файлик сразу, где видно, что действует только одно непонятно ограничение, но Вы теперь его почему то игнорируете ))
Изменено: Android1 - 22.01.2018 10:49:54
 
Значит в новых версиях (где кол-во строк увеличено до более миллиона) Transpose осталась недоработанной и имеет ограничение по кол-ву строк старых версий
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Транспонировать более 16 384 строк в столбцы Вы не сможете, т.к. столбцы кончатся.
Это справедливо для Range, но для Array может быть другое ограничение.
Неизлечимых болезней нет, есть неизлечимые люди.
 
Я не понимаю, почему такая простая конструкция не хочет работать (((
Код
For i = 1 To 10
ReDim Preserve Array1(i)
Array1(i,1) = 2
Next

Я хочу записать значение 2 в массив Array1 в строку I (1..9) столбец 1, но почему Subscript out of range. (((((
чОртовы массивы, неужели не могли их сделать понятными...
Изменено: Android1 - 22.01.2018 11:35:44
 
Потому, что массив может быть либо одномерным, либо двухмерным, но не то и другое одновременно.
 
Код
'Array1(i,1) = 2

Array1(i) = 2
Неизлечимых болезней нет, есть неизлечимые люди.
 
Это да, но в таком случае записывается в Массив в строку, а я хочу сразу в столбец :)
 
Для одномерного массива без разницы как Вы понимаете информацию в виде строк или в виде столбцов. При выводе на лист примените Transponse.

Либо Так работать не будет:
Код
'ReDim Preserve Array1(i)

ReDim Preserve Array1(i,1)
Цитата
Из офф справки:
Если вы используете ключевое слово Preserve, вы можете изменить размер только последнего измерения массива, и вы не можете изменить количество измерений вообще. Например, если ваш массив имеет только одно измерение, вы можете изменить его размер, потому что это последнее и единственное измерение. Однако, если ваш массив имеет два или более измерений, вы можете изменить размер только последнего измерения и сохранить содержимое массива. В следующем примере показано, как можно увеличить размер последнего измерения динамического массива без удаления каких-либо существующих данных, содержащихся в массиве.

Будет работать так:
Код
ReDim Preserve Array1(1,i)
Изменено: TheBestOfTheBest - 22.01.2018 13:23:09
Неизлечимых болезней нет, есть неизлечимые люди.
 
Да ну вот в этом и проблема в этом Transponse. У него, как оказалось есть ограничения, спасибо разработчикам Екселя.
 
Цитата
TheBestOfTheBest написал:
ReDim Preserve Array1(i,1)
Тоже Subscript out of range.
 
Не ограничение, а глюк. Причем пока только на Вашем компе.
Из ссылки #31 не следует, что есть ограничение на транспонирование массива, есть ограничения на диапазон строк и столбцов. Однако замечено, что при использовании больших массивов, иногда, возникает "Out of memory" на 32-битных версиях экселя. После смены на 64 ошибок нет.
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
Android1 написал:
Тоже Subscript out of range.
файл приложите
Неизлечимых болезней нет, есть неизлечимые люди.
 
Прикладываю.
Изменено: Android1 - 22.01.2018 12:15:25
 
Если известно количество знаков в числе,то можно задать формат ячейки.Для этого в   "Формат ячейки" в позиции  "(все форматы)" задать тип (маску),
например: 0#####. Тогда, если ввести пятизначное число  12345, результатом будет 012345. Так можно задать любое количество нулей перед числом
 
Вот Вам пример вывода 16380 и строк и столбцов, на 2010 работает.
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
TheBestOfTheBest написал:
Вот Вам пример вывода 16380 и строк и столбцов, на 2010 работает.
Так не работает же :)
Я дополнил одной строчкой, Массив в столбец не раскладывается!
Я поэтому и говорю - чОртовы массивы, неужели не могли их сделать нормальными... №;%:?* какой то
Изменено: Android1 - 22.01.2018 13:28:20
 
Цитата
Android1 написал:
Так не работает же
добавил строку (16381), работает
Изменено: TheBestOfTheBest - 22.01.2018 13:50:40
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
TheBestOfTheBest написал:
добавил строку (16381), работает
Не сочтите за наглость, но Ваш макрос не раскладывает Массив в вертикальный Столбец, то есть Не Работает.
Вы убрали из моего преыдущего файла важную строку, из за чего Вы не видите "не работу" макроса. :(
Изменено: Android1 - 22.01.2018 14:00:42
 
Цитата
Android1 написал:
в вертикальный Столбец,
Разве в столбце А нет данных? Разве их не макрос туда записал?
Неизлечимых болезней нет, есть неизлечимые люди.
 
Он записал только первый элемент Массива. Согласитесь, это не весь массив. ?
 
Цитата
Android1 написал:
Так не работает же
Я дополнил одной строчкой, Массив в столбец не раскладывается!
Я поэтому и говорю - чОртовы массивы, неужели не могли их сделать нормальными... №;%:?* какой то

Вот это работать не будет,
Код
Option Base 1
Private Sub CommandButton1_Click()
Dim Array1()
Dim i&
ReDim Array1(16380)
For i = 1 To 16380
    Array1(i) = 2 + k
    k = k + 1
Next
Range("A1").Resize(UBound(Array1), 1) = Array1
Range("B1").Resize(1, UBound(Array1)) = Array1
End Sub
т.к. переменная "к" не иниц-на, будет ошибка и массивы здесь абсолютно не причем, так же как и Ваше утверждение, что макрос #46 не работает.
Учите матчасть, коллега.
Изменено: TheBestOfTheBest - 22.01.2018 14:14:45
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
TheBestOfTheBest написал:
т.к. переменная "к" не иниц-на, будет ошибка и массивы здесь абсолютно не причем
Никакой ошибки при запуске макроса - нет. Макрос работает в стандартном режиме, без ошибок и выводит в вертикальный столбец - первый элемент массива.
Изменено: Android1 - 22.01.2018 14:22:01
 
Цитата
Android1 написал:
так же как и Ваше утверждение, что макрос #46 не работает.
Я в выше писал, что:
Код
Это да, но в таком случае записывается в Массив в строку, а я хочу сразу в столбец  
Я просто думал мы в этом ключе общаемся, так сказать :)

Если цель вывести данные из массива в вертикальный столбец без транспонирования, то Ваш макрос не выполняет эту задачу, так как первый элемент массива, это не весь массив, ну а я соотвесвенно не могу понять, как это вообще можно сделать. Вроде простейшее действие, но блин чтобы его сделать, вообще не понимаю, что нужно сделать.
Изменено: Android1 - 22.01.2018 14:21:14
 
Цитата
Android1 написал:
Если цель вывести данные из массива в вертикальный столбец без транспонирования,
в #46 так и есть, но для вашего кода надо обязательно транспонировать.
Изменено: TheBestOfTheBest - 22.01.2018 14:35:36
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
Android1 написал:
Да ну вот в этом и проблема в этом Transponse. У него, как оказалось есть ограничения, спасибо разработчикам Екселя.
Goto Line1

:))))))
Изменено: Android1 - 22.01.2018 14:36:15
 
тогда возвращаемся к предыдущему варианту из 2-х измерений )))
Изменено: TheBestOfTheBest - 22.01.2018 14:41:59
Неизлечимых болезней нет, есть неизлечимые люди.
 
Мне очень стыдно, но:
Код
k = 0
ReDim Array1(60000, 1)
For i = 1 To 60000
    Array1(i, 1) = 2 + k
    k = k + 1
Next
Range("B1").Resize(UBound(Array1), 1) = Array1
Работает, но, почему, если сделать, как ниже, то так, не хочет выводить данные, то есть какой смысл делать ReDim до начала цикла ?
Код
k = 0

For i = 1 To 600000
ReDim Array1(i, 1)
    Array1(i, 1) = 2 + k
    k = k + 1
NextRange("B1").Resize(UBound(Array1), 1) = Array1
Изменено: Android1 - 22.01.2018 14:52:32
 
Я уже писАл где то выше, что при каждом ReDim массив инициализируется по новой, и все что было в нем ранее удаляется
Согласие есть продукт при полном непротивлении сторон
 
Потому, что ReDim Preserve Array1(i,1) записано неверно, надо ReDim Preserve Array1(1,i). Только зачем при известной верхней границе редимить в цикле?
Изменено: TheBestOfTheBest - 22.01.2018 14:59:54
Неизлечимых болезней нет, есть неизлечимые люди.
Страницы: Пред. 1 2 3 След.
Наверх