Добрый день! Необходимо сравнить таблицу продажи с таблицей остатки, и если есть на остатках данная позиция и данный размер то копировать в новый лист. Сделать это если возможно формулой.
Добрый день! Необходимо сравнить таблицу продажи с таблицей остатки, и если есть на остатках данная позиция и данный размер то копировать в новый лист. Сделать это если возможно формулой.nik-gredin
Никогда не работал с 1С - скажите, эта программа действительно не умеет выгружать нормальные отчёты, пригодные для дальнейшей обработки?
Вообще конечно и из этих отчётов можно макросом сделать пригодную для обработки/сравнения таблицу - но это работа, и не интересная... Правильнее было бы выгрузить из системы отчёт в другом виде, если конечно это возможно.
Хотя вот поработал чуть: [vba]
Код
Option Explicit
Sub tt() Dim r As Range, c As Range, nr$, nz$, i&
Set r = ActiveSheet.UsedRange ReDim a(1 To r.Rows.Count, 1 To 4)
For Each c In r.Columns(1).Cells If c.Interior.ColorIndex = 19 Then If c.Font.Bold Then nr = c.Value: nz = c.Offset(1).Value Else If Not c.Font.Bold Then If Len(c.Offset(, 1)) Then i = i + 1 a(i, 1) = nr a(i, 2) = nz a(i, 3) = c a(i, 4) = c.Offset(, 1) End If End If End If Next
[e1].Resize(i, 4) = a End Sub
[/vba] Результаты работы кода уже можно сравнивать как угодно.
Никогда не работал с 1С - скажите, эта программа действительно не умеет выгружать нормальные отчёты, пригодные для дальнейшей обработки?
Вообще конечно и из этих отчётов можно макросом сделать пригодную для обработки/сравнения таблицу - но это работа, и не интересная... Правильнее было бы выгрузить из системы отчёт в другом виде, если конечно это возможно.
Хотя вот поработал чуть: [vba]
Код
Option Explicit
Sub tt() Dim r As Range, c As Range, nr$, nz$, i&
Set r = ActiveSheet.UsedRange ReDim a(1 To r.Rows.Count, 1 To 4)
For Each c In r.Columns(1).Cells If c.Interior.ColorIndex = 19 Then If c.Font.Bold Then nr = c.Value: nz = c.Offset(1).Value Else If Not c.Font.Bold Then If Len(c.Offset(, 1)) Then i = i + 1 a(i, 1) = nr a(i, 2) = nz a(i, 3) = c a(i, 4) = c.Offset(, 1) End If End If End If Next
[e1].Resize(i, 4) = a End Sub
[/vba] Результаты работы кода уже можно сравнивать как угодно.Hugo
эта программа действительно не умеет выгружать нормальные отчёты, пригодные для дальнейшей обработки?
Игорь, ДА! [p.s.]Правда можно нагрузить программеров 1с (практически тот же бейсик, только на русском языке), тогда можно чего-то добиться, но как показывает практика - даже это достаточно сложно[/p.s.]
эта программа действительно не умеет выгружать нормальные отчёты, пригодные для дальнейшей обработки?
Игорь, ДА! [p.s.]Правда можно нагрузить программеров 1с (практически тот же бейсик, только на русском языке), тогда можно чего-то добиться, но как показывает практика - даже это достаточно сложно[/p.s.]Serge_007