Дата: Понедельник, 12.08.2013, 11:37 |
Сообщение № 1
Группа: Гости
имеется большая таблица ( 16000 строк) в формате фамилия Пупкин Имя Василий Отчество Иваноыич Статус К8 фамилия **** Имя **** Отчество **** Статус **** фамилия **** Имя **** Отчество **** Статус ****
как преобразовать эту таблицу в формат Фамилия Имя Отчество Статус Пупкин Василий Иванович К8 ****** ****** ******** ** ****** ****** ******** **
ФИО могут повторятся
имеется большая таблица ( 16000 строк) в формате фамилия Пупкин Имя Василий Отчество Иваноыич Статус К8 фамилия **** Имя **** Отчество **** Статус **** фамилия **** Имя **** Отчество **** Статус ****
как преобразовать эту таблицу в формат Фамилия Имя Отчество Статус Пупкин Василий Иванович К8 ****** ****** ******** ** ****** ****** ******** **
Wasilic, integer там не годится - мы ведь не знаем, сколько там может в другой раз быть фамилий! К тому же в последних версиях всё равно все приводится в Long - но ошибки почему-то остаются
Можно и побыстрее: [vba]
Код
Sub Кнопка1_Щелкнуть() Dim a, i& a = [c5].CurrentRegion.Value ReDim b(1 To UBound(a) / 4 + 1, 1 To 4) On Error Resume Next For i = 1 To UBound(a) Step 4 ii = ii + 1 For x = 1 To 4: b(ii, x) = a(i + x - 1, 1): Next Next
[e5].Resize(UBound(b), 4) = b End Sub
[/vba]
Wasilic, integer там не годится - мы ведь не знаем, сколько там может в другой раз быть фамилий! К тому же в последних версиях всё равно все приводится в Long - но ошибки почему-то остаются
Можно и побыстрее: [vba]
Код
Sub Кнопка1_Щелкнуть() Dim a, i& a = [c5].CurrentRegion.Value ReDim b(1 To UBound(a) / 4 + 1, 1 To 4) On Error Resume Next For i = 1 To UBound(a) Step 4 ii = ii + 1 For x = 1 To 4: b(ii, x) = a(i + x - 1, 1): Next Next
integer там не годится - мы ведь не знаем, сколько там может в другой раз быть фамилий!
Как я знаю, Integer - объявляет переменную как целое число. Long - Длинное целое. В чем разница? На счет скорости согласен. Я старею - прогресс молодеет. Но, это был лишь путь решения задачи.
integer там не годится - мы ведь не знаем, сколько там может в другой раз быть фамилий!
Как я знаю, Integer - объявляет переменную как целое число. Long - Длинное целое. В чем разница? На счет скорости согласен. Я старею - прогресс молодеет. Но, это был лишь путь решения задачи.Wasilich
У integer предел на половине листа формата 2003. 16000 конечно обработает, и даже 32000 тоже (предел 32,767), но есть риск что данных будет больше. Хотя на этой задаче их мало.
Но смысла в Integer больше нет: "Traditionally, VBA programmers have used integers to hold small numbers, because they required less memory. In recent versions, however, VBA converts all integer values to type Long, even if they are declared as type Integer. Therefore, there is no longer a performance advantage to using Integer variables; in fact, Long variables might be slightly faster because VBA does not have to convert them."
У integer предел на половине листа формата 2003. 16000 конечно обработает, и даже 32000 тоже (предел 32,767), но есть риск что данных будет больше. Хотя на этой задаче их мало.
Но смысла в Integer больше нет: "Traditionally, VBA programmers have used integers to hold small numbers, because they required less memory. In recent versions, however, VBA converts all integer values to type Long, even if they are declared as type Integer. Therefore, there is no longer a performance advantage to using Integer variables; in fact, Long variables might be slightly faster because VBA does not have to convert them."
Архитектура современных компьютеров предполагает использование переменных типа Long. При работе программы все равно выполняется преобразование типа integer к типу long.
В прошлом веке хорошо, в нынешнем - плохо.
Архитектура современных компьютеров предполагает использование переменных типа Long. При работе программы все равно выполняется преобразование типа integer к типу long.
Сереж, был смысл, когда работали на машинах типа Z-Spectrum, с 48 кБ памяти на все - на код и данные. Есть смысл, если обрабатываются массивы более 10 млн элементов. В повседневных задачах на современных машинах смыла нет.
Сереж, был смысл, когда работали на машинах типа Z-Spectrum, с 48 кБ памяти на все - на код и данные. Есть смысл, если обрабатываются массивы более 10 млн элементов. В повседневных задачах на современных машинах смыла нет.Michael_S