В книге два листа В первом листе столбец А - уникальный номер (скажем айди клиента) В последующих столбцах даты по месяцам Под каждым месяцем оплата клиента Необходимо перенести данные на соседний лист где
столбец А - айди клиента столбец Б - оплата столбец С - дата
то есть каждую оплату перенести из столбцов в строки Не знаю сумел ли нормально обьяснить Приложил файл
Доброго времени суток Нужна ваша помощь
В книге два листа В первом листе столбец А - уникальный номер (скажем айди клиента) В последующих столбцах даты по месяцам Под каждым месяцем оплата клиента Необходимо перенести данные на соседний лист где
столбец А - айди клиента столбец Б - оплата столбец С - дата
то есть каждую оплату перенести из столбцов в строки Не знаю сумел ли нормально обьяснить Приложил файлbuskopan
ReDim varResult(1 To WorksheetFunction.CountA(varData), 1 To 3)
For c = LBound(varCols, 2) To UBound(varCols, 2) For r = LBound(varRows, 1) To UBound(varRows, 1) If Not IsEmpty(varData(r, c)) Then i = i + 1 varResult(i, 1) = varRows(r, 1) varResult(i, 2) = varCols(1, c) varResult(i, 3) = varData(r, c) End If Next r, c
Worksheets("database").Range("A2").Resize(i, 3) = varResult End Sub
[/vba]
А можно и попроще, не мудрствуя лукаво: [vba]
Код
Sub makeNormalTable() Dim varCols, varRows, varData, varResult(), r, c, i
ReDim varResult(1 To WorksheetFunction.CountA(varData), 1 To 3)
For c = LBound(varCols, 2) To UBound(varCols, 2) For r = LBound(varRows, 1) To UBound(varRows, 1) If Not IsEmpty(varData(r, c)) Then i = i + 1 varResult(i, 1) = varRows(r, 1) varResult(i, 2) = varCols(1, c) varResult(i, 3) = varData(r, c) End If Next r, c
Worksheets("database").Range("A2").Resize(i, 3) = varResult End Sub
Для первого файла, вроде, сходились. Для второго не забудьте подправить диапазоны в Range(...). И, возможно, 2-ю и 3-ю колонку результата следует местами поменять, если надо, чтобы дата была третьей.
Для первого файла, вроде, сходились. Для второго не забудьте подправить диапазоны в Range(...). И, возможно, 2-ю и 3-ю колонку результата следует местами поменять, если надо, чтобы дата была третьей.Gustav
Для второго не забудьте подправить диапазоны в Range(...). И, возможно, 2-ю и 3-ю колонку результата следует местами поменять, если надо, чтобы дата была третьей.
Для второго не забудьте подправить диапазоны в Range(...). И, возможно, 2-ю и 3-ю колонку результата следует местами поменять, если надо, чтобы дата была третьей.