Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 24.06.2018
Сообщений: 3
1

Транспонирование пар значений

24.06.2018, 11:47. Показов 990. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вба-гуру, помогите пжл с вопросом:
Есть данные в формате
352250,00822599021084211281
12067,00512715815925
1203,0043      
Данные в столбце 3 и далее представлены парами: 8-255, 9-902, 10-842 и так далее. Количество пар в строках разное. Требуется транспонировать пары, чтобы на выходе было так:
352250,008225
  9902
  10842
  11281

и так далее со значениями из следующей строки.
Логику вижу так:
- посчитать непустые ячейки в строках
(проверка
Visual Basic
1
2
3
4
5
6
7
8
9
Dim a       
Dim i            
Dim j                         
 For i = 1 j = 5                   
 If notEmpty (cells(i, j)) Then a= count cells                  
End If 
Next j 
'пробег по индексам строки и столбца, начиная с 5го столбца, посчитать непустые ячейки, сохранить количество) 
Next i
- вставить строки (количество пополам, т.к. пары значений) (rows (a 2).insert) ? - и собственно транспонировать пары (тут вообще непонятно как)

Помогите плиз все это облачить в работающий код, совсем замучалась
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2018, 11:47
Ответы с готовыми решениями:

Транспонирование значений из нескольких столбцов в один столбец
Добрый день! Подскажите, как сделать следующую вещь. Имеется таблица, в столбцах значения. ...

Замена пар значений
Нужно реализовать метод, но есть стойкое убеждение, что мой подход не будет отличаться...

Получение уникальных пар значений
Присутствуют в моей базе поля section и floor. Выглядит примерно 1 1 1 1 1 1 1 1 1 2 1 2 2...

Проверка пар и количество значений больше среднего
1)Пользователь вводит 4 числа и нужно написать программу, которая показывает являются ли они...

6
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.06.2018, 12:46 2
Вааще другой подход, как мне нравится
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub словарь_с_коллекцией()    'коллекция в словаре
    Dim a, i&, t$, Dic As Object
    Dim el, col
 
    a = Range("A1").CurrentRegion.Value
 
    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        .CompareMode = 1
        For i = 1 To UBound(a)
            t = i
            .Add t, New Collection
            For ii = 3 To UBound(a, 2) Step 2
                If Len(a(i, ii)) Then .Item(t).Add Array(a(i, ii), a(i, ii + 1))
            Next
        Next
    End With
 
    With Workbooks.Add(1).Sheets(1)
 
        i = 0
        For Each el In Dic.keys
            i = i + 1
            .Cells(i, 1).Resize(, 2).Value = Array(a(el, 1), a(el, 2)): i = i - 1
            For Each col In Dic.Item(el)
                i = i + 1
                .Cells(i, 3).Resize(, 2).Value = col
            Next
        Next
 
        .UsedRange.Columns(2).NumberFormat = "0.00"
    End With
End Sub
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
24.06.2018, 13:03 3
Лучший ответ Сообщение было отмечено kubikbu как решение

Решение

kubikbu, файл с модельным вашим примером. результат с 11 строки. Число строки число столбцов, при необходимости, измените сами. Границы ячеек и красоту фона тоже самостоятельно. Запускаете макрос Transpon
Вложения
Тип файла: xls Transpon.xls (30.0 Кб, 6 просмотров)
1
0 / 0 / 0
Регистрация: 24.06.2018
Сообщений: 3
24.06.2018, 18:41  [ТС] 4
Burk Вы мой герой)) Спасибо!)
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.06.2018, 18:49 5
Зато у меня с "защитой от дурака" (динамический диапазон, и ничего не затрёт), и форматы чисел как на картинке, а не текст
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
25.06.2018, 05:57 6
Hugo121, ну неужели вы думаете, что я не мог бы тоже определить динамический диапазон и проч.?
Только я стараюсь действовать в границах задания юзера в надежде, что глядя на мой код, при необходимости, он (она) может ввести усовершенствования самостоятельно. Так что может не будем заниматься детсадовскими фразами - а у меня лучше. Ваш уровень мне понятен, но и я тоже кое-что могу.
0
0 / 0 / 0
Регистрация: 24.06.2018
Сообщений: 3
25.06.2018, 08:42  [ТС] 7
Hugo121 Вам тоже огромное спасибо, конечно же) но логика Burk мне более понятна, и да, потом его код полегче модифицировать
0
25.06.2018, 08:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2018, 08:42
Помогаю со студенческими работами здесь

Определить алгоритм шифрования пар двубайтовых значений.
Есть пары 2-байтовых значений. Пример: 4AE8 - 169C BF84 - FC44 4B28 - 151C 8B1F - 9572 F0C2...

Найти большее из наименьших значений пар чисел
№1(с помощью процедуры) Даны действительные числа S,t. Получить Z=f(t,-25,1.17) + f(2.2,t,S-t),...

Для n пар значений А, В вычислить по выбору площадь прямоугольника
Для n пар значений А, В вычислить по выбору площадь прямоугольника со сторонами А, В; площадь...

Сравнение двух пар столбцов в разных листах и вывод значений
Добрый день! Очень нужна помощь в написании макроса. На листе 1 есть данные в столбцах*B*и*G, на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru