Надо условно разбить строки на группы с равными значениями в этих колонках и каждую строку в группе пронумеровать, начиная с 1. Если отсортировать, то реализовать нумерацию и просто и быстро: нужно сравнить текущую строку только с предыдущей.
Надо условно разбить строки на группы с равными значениями в этих колонках и каждую строку в группе пронумеровать, начиная с 1. Если отсортировать, то реализовать нумерацию и просто и быстро: нужно сравнить текущую строку только с предыдущей.SergeyKorotun
Все же 13 ключей сортировки - это лишка. Как понял, сортировка - промежуточный этап решения какой-то глобальной задачи. Может, как-то по-другому подойти?
Бегло посмотрел всю тему. Словари работают с несортированными массивами так же хорошо, как и с сортированными.
Все же 13 ключей сортировки - это лишка. Как понял, сортировка - промежуточный этап решения какой-то глобальной задачи. Может, как-то по-другому подойти?
Бегло посмотрел всю тему. Словари работают с несортированными массивами так же хорошо, как и с сортированными.nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Суббота, 07.09.2013, 18:24
В базу попала какая то запись. В последнем поле 0. Если позже была замечена ошибка, то она не исправляется в ранее созданной записи, а в базу добавляется точно такая же строка, только в последнем поле не 0, а 1. А потом додается еще одна строка, правильная с 0 в последнем поле. Например, в базу добавлена запись: 00001 100 100 15 15 101 0 Позже было замечена ошибка, нужно не 15, а 16. В базу добавляется еще две строки: 00001 100 100 15 15 101 1 00001 100 100 16 16 101 0 Итак, в базе 3 записи. Надо создать отчет. В отчет мусор не должен попасть. В отчет должна попасть только третья запись, т.к. в 1 и 2 записях все значения, кроме последнего поля совпадают и 1 в последнем поле второй записи указывает на то, что нужно найти точно такую же запись, но содержащую в последнем поле 0 (это 1 запись) и если такая существует, эту пару не учитывать. Если записи со значением 1 в последнем поле нет соответствующей записи с признаком 0, то это значит, что при исправлении ошибки была снова допущена ошибка и эта запись должна попасть уже в другой отчет. Если строке с признаком 1 соответствует несколько строк с признаком 0, то в отчете должна не учитываться только соответствующая пара, а не все строки. Т.е. строка с признаком 1 может "прибить" только одну строку с признаком 0. Алгоритм придумал такой: сортирую выборку по всем n полям. Отсортированную выборку можно условно поделить на группы - записи, в которых все значения равны. В отсортированной выборке проверка на принадлежность строки к группе легко проверяется. Потом каждую группу нужно пронумеровать, начиная с 1. Это надо сделать для того, чтобы записи с признаком 1 соответствовала только одна строка с признаком 0. Итак, добавляем поле n+1 и в него записываем нумерацию записей. Новый пример: А Б С 0 А Б С 0 А Б Д 0 А Б В 1 -должна удалить 6 запись А Б С 1 - должна удалить 1 или 2 запись, но не обе А Б В 0 А Б Г 1 - что-то хотели удалить, но снова допустили ошибку, т.к. нет соответствующей записи А Б Г 0 Сортируем выборку: А Б С 0 А Б С 0 А Б С 1 А Б Д 0 А Б В 0 А Б В 1 А Б Г 1 Нумеруем подгруппы в новом поле: А Б С 0 1 А Б С 0 2 А Б С 1 1 А Б Д 0 1 А Б В 0 1 А Б В 1 1 А Б Г 1 1 Теперь еще одна сортировка по 1,2,3,5 полям: А Б С 0 1 А Б С 1 1 А Б С 0 2 А Б Д 0 1 А Б В 0 1 А Б В 1 1 А Б Г 1 1 Теперь пары строк, которые не надо учитывать, идут подряд (выделены жирным шрифтом и их легко определить). Недостатки алгоритма: две сортировки. Но сортироваться будет средствами екселя, а он это делает быстро. Мне кажется, что время выполнения будет значительно меньше, чем брать 1 запись и сравнивать ее со всеми последующими до нахождения подобной, потом вторую с последующими и т.д.
В базу попала какая то запись. В последнем поле 0. Если позже была замечена ошибка, то она не исправляется в ранее созданной записи, а в базу добавляется точно такая же строка, только в последнем поле не 0, а 1. А потом додается еще одна строка, правильная с 0 в последнем поле. Например, в базу добавлена запись: 00001 100 100 15 15 101 0 Позже было замечена ошибка, нужно не 15, а 16. В базу добавляется еще две строки: 00001 100 100 15 15 101 1 00001 100 100 16 16 101 0 Итак, в базе 3 записи. Надо создать отчет. В отчет мусор не должен попасть. В отчет должна попасть только третья запись, т.к. в 1 и 2 записях все значения, кроме последнего поля совпадают и 1 в последнем поле второй записи указывает на то, что нужно найти точно такую же запись, но содержащую в последнем поле 0 (это 1 запись) и если такая существует, эту пару не учитывать. Если записи со значением 1 в последнем поле нет соответствующей записи с признаком 0, то это значит, что при исправлении ошибки была снова допущена ошибка и эта запись должна попасть уже в другой отчет. Если строке с признаком 1 соответствует несколько строк с признаком 0, то в отчете должна не учитываться только соответствующая пара, а не все строки. Т.е. строка с признаком 1 может "прибить" только одну строку с признаком 0. Алгоритм придумал такой: сортирую выборку по всем n полям. Отсортированную выборку можно условно поделить на группы - записи, в которых все значения равны. В отсортированной выборке проверка на принадлежность строки к группе легко проверяется. Потом каждую группу нужно пронумеровать, начиная с 1. Это надо сделать для того, чтобы записи с признаком 1 соответствовала только одна строка с признаком 0. Итак, добавляем поле n+1 и в него записываем нумерацию записей. Новый пример: А Б С 0 А Б С 0 А Б Д 0 А Б В 1 -должна удалить 6 запись А Б С 1 - должна удалить 1 или 2 запись, но не обе А Б В 0 А Б Г 1 - что-то хотели удалить, но снова допустили ошибку, т.к. нет соответствующей записи А Б Г 0 Сортируем выборку: А Б С 0 А Б С 0 А Б С 1 А Б Д 0 А Б В 0 А Б В 1 А Б Г 1 Нумеруем подгруппы в новом поле: А Б С 0 1 А Б С 0 2 А Б С 1 1 А Б Д 0 1 А Б В 0 1 А Б В 1 1 А Б Г 1 1 Теперь еще одна сортировка по 1,2,3,5 полям: А Б С 0 1 А Б С 1 1 А Б С 0 2 А Б Д 0 1 А Б В 0 1 А Б В 1 1 А Б Г 1 1 Теперь пары строк, которые не надо учитывать, идут подряд (выделены жирным шрифтом и их легко определить). Недостатки алгоритма: две сортировки. Но сортироваться будет средствами екселя, а он это делает быстро. Мне кажется, что время выполнения будет значительно меньше, чем брать 1 запись и сравнивать ее со всеми последующими до нахождения подобной, потом вторую с последующими и т.д.SergeyKorotun
Сообщение отредактировал SergeyKorotun - Воскресенье, 08.09.2013, 01:43
"...две сроки, в которых совпадают значения в колонках P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY, и не совпадают значения в AW" Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.
"...две сроки, в которых совпадают значения в колонках P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY, и не совпадают значения в AW" Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.nilem
Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.
Если я правильно понял, вы предлагаете отсортировать лист по всем столбцам? AW также нужно включать в первую сортировку. Но так будет неверно. Например, в наименовании предприятия в 1 отчете была набрана буква "а" латиницей, а во втором кириллицей. Или руководитель или бухгалтер сменился.
Макрос, записанный макрорекордером, сортирует верно. Если внести в него изменения в определение граничной строки - в конце второй строки почему-то пустые значения.
PS Если заремировать вызов процедуры сортировки, а потом запустить ее вручную, сортируется верно. Как это пояснить.
Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.
Если я правильно понял, вы предлагаете отсортировать лист по всем столбцам? AW также нужно включать в первую сортировку. Но так будет неверно. Например, в наименовании предприятия в 1 отчете была набрана буква "а" латиницей, а во втором кириллицей. Или руководитель или бухгалтер сменился.
Макрос, записанный макрорекордером, сортирует верно. Если внести в него изменения в определение граничной строки - в конце второй строки почему-то пустые значения.
PS Если заремировать вызов процедуры сортировки, а потом запустить ее вручную, сортируется верно. Как это пояснить.SergeyKorotun
вот так попробуйте (дописал предыдущий код, обратите внимание на имена листов) предполагается, что данные нах-ся на листе "Sheet1" [vba]
Код
Sub ertert() Dim x, arr, i&, j&, k, s$, t Sheets("Sheet1").Activate x = Range("A1:BZ" & Cells(Rows.Count, 1).End(xlUp).Row).Value 'or CurrentRegion 'совпадают значения в P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY и не совпадают значения в AW arr = Array(16, 25, 26, 31, 33, 35, 37, 39, 41, 43, 45, 51) 'AW - 49, BZ - 78 With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 2 To UBound(x) For j = 0 To UBound(arr) s = s & x(i, arr(j)) & "~" Next j If .Exists(s) Then If .Item(s)(0) <> x(i, 49) Then t = IIf(x(i, 49) > 0, .Item(s)(0), x(i, 49)) With Sheets("Sheet4").Cells(Rows.Count, 1).End(xlUp)(2) .Resize(2, 78).Value = Cells(i, 1).Resize(, 78).Value ' .Resize(2, 78).Value = Rows(i).Value .Item(, 49).Value = t: .Item(2, 49).Value = 1 End With .Remove s Else Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 78).Value _ = Cells(i, 1).Resize(, 78).Value End If Else .Item(s) = Array(x(i, 49), i) End If s = vbNullString Next i For Each k In .keys t = .Item(k)(0): s = IIf(t > 0, "Sheet3", "Sheet2") i = .Item(k)(1) With Sheets(s).Cells(Rows.Count, 1).End(xlUp)(2) .Resize(, 78).Value = WorksheetFunction.Index(x, i, 0): .Item(, 49).Value = t End With Next k End With End Sub
[/vba]
вот так попробуйте (дописал предыдущий код, обратите внимание на имена листов) предполагается, что данные нах-ся на листе "Sheet1" [vba]
Код
Sub ertert() Dim x, arr, i&, j&, k, s$, t Sheets("Sheet1").Activate x = Range("A1:BZ" & Cells(Rows.Count, 1).End(xlUp).Row).Value 'or CurrentRegion 'совпадают значения в P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY и не совпадают значения в AW arr = Array(16, 25, 26, 31, 33, 35, 37, 39, 41, 43, 45, 51) 'AW - 49, BZ - 78 With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 2 To UBound(x) For j = 0 To UBound(arr) s = s & x(i, arr(j)) & "~" Next j If .Exists(s) Then If .Item(s)(0) <> x(i, 49) Then t = IIf(x(i, 49) > 0, .Item(s)(0), x(i, 49)) With Sheets("Sheet4").Cells(Rows.Count, 1).End(xlUp)(2) .Resize(2, 78).Value = Cells(i, 1).Resize(, 78).Value ' .Resize(2, 78).Value = Rows(i).Value .Item(, 49).Value = t: .Item(2, 49).Value = 1 End With .Remove s Else Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 78).Value _ = Cells(i, 1).Resize(, 78).Value End If Else .Item(s) = Array(x(i, 49), i) End If s = vbNullString Next i For Each k In .keys t = .Item(k)(0): s = IIf(t > 0, "Sheet3", "Sheet2") i = .Item(k)(1) With Sheets(s).Cells(Rows.Count, 1).End(xlUp)(2) .Resize(, 78).Value = WorksheetFunction.Index(x, i, 0): .Item(, 49).Value = t End With Next k End With End Sub
Большое спасибо! То что надо. Где можно чайнику почитать о Dictionary?
Но почему сортировка глючит, вопрос остается открытым. Оставил в папке XML один файл 04250012345678J0500103100000000120620130425.xml, отсортировался верно.
Почему макрос выскакивает в debug при попытке очистить лист 3, 4 , 5 [vba]
Код
r = ActiveWorkbook.Worksheets(3).UsedRange.Rows.Count c = ActiveWorkbook.Worksheets(3).UsedRange.Columns.Count If r < 2 Then r = 2 ActiveWorkbook.Worksheets(3).Range(Cells(2, 1), Cells(r, c)).Clear
r = ActiveWorkbook.Worksheets(4).UsedRange.Rows.Count c = ActiveWorkbook.Worksheets(4).UsedRange.Columns.Count If r < 2 Then r = 2 ActiveWorkbook.Worksheets(4).Range(Cells(2, 1), Cells(r, c)).Clear
r = ActiveWorkbook.Worksheets(5).UsedRange.Rows.Count c = ActiveWorkbook.Worksheets(5).UsedRange.Columns.Count If r < 2 Then r = 2 ActiveWorkbook.Worksheets(5).Range(Cells(2, 1), Cells(r, c)).Clear
[/vba]
Большое спасибо! То что надо. Где можно чайнику почитать о Dictionary?
Но почему сортировка глючит, вопрос остается открытым. Оставил в папке XML один файл 04250012345678J0500103100000000120620130425.xml, отсортировался верно.
Почему макрос выскакивает в debug при попытке очистить лист 3, 4 , 5 [vba]
Код
r = ActiveWorkbook.Worksheets(3).UsedRange.Rows.Count c = ActiveWorkbook.Worksheets(3).UsedRange.Columns.Count If r < 2 Then r = 2 ActiveWorkbook.Worksheets(3).Range(Cells(2, 1), Cells(r, c)).Clear
r = ActiveWorkbook.Worksheets(4).UsedRange.Rows.Count c = ActiveWorkbook.Worksheets(4).UsedRange.Columns.Count If r < 2 Then r = 2 ActiveWorkbook.Worksheets(4).Range(Cells(2, 1), Cells(r, c)).Clear
r = ActiveWorkbook.Worksheets(5).UsedRange.Rows.Count c = ActiveWorkbook.Worksheets(5).UsedRange.Columns.Count If r < 2 Then r = 2 ActiveWorkbook.Worksheets(5).Range(Cells(2, 1), Cells(r, c)).Clear
Вопрос о сортировке снят. Случайно вызов процедуры сортировки попал в цикл и вызывался столько раз, сколько строк на листе 1. Но почему не для всех обрабатываемых xml файлов сортировка глючила, не понятно.
Вопрос о сортировке снят. Случайно вызов процедуры сортировки попал в цикл и вызывался столько раз, сколько строк на листе 1. Но почему не для всех обрабатываемых xml файлов сортировка глючила, не понятно.SergeyKorotun
nilem, обнаружил ошибку. На Лист 5 должны были попасть две строки с листа 1, а попадает скорее всего одна, дважды прописанная, с измененным значениям ячейки AW* с 0 на 1 во второй строке. А строки-кандидаты на Лист 5 в Листе 1 должны совпадать только в ячейках P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY, и не совпадать в AW. А в остальных столбцах значения могут не совпадать, хотя могут и совпадать. nilem, в вашем макросе я листы сместил на 1, так как лист2 у меня занят под настройки. В приложенном файле на листе1 и листе5 расхождения выделены желтым цветом.
nilem, обнаружил ошибку. На Лист 5 должны были попасть две строки с листа 1, а попадает скорее всего одна, дважды прописанная, с измененным значениям ячейки AW* с 0 на 1 во второй строке. А строки-кандидаты на Лист 5 в Листе 1 должны совпадать только в ячейках P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY, и не совпадать в AW. А в остальных столбцах значения могут не совпадать, хотя могут и совпадать. nilem, в вашем макросе я листы сместил на 1, так как лист2 у меня занят под настройки. В приложенном файле на листе1 и листе5 расхождения выделены желтым цветом.SergeyKorotun
В макросе мы проверяем столбцы P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY. Сравните с тем, в каких столбцах у вас желтая заливка (или столбцы не те, или заливка не там)
В макросе мы проверяем столбцы P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY. Сравните с тем, в каких столбцах у вас желтая заливка (или столбцы не те, или заливка не там)nilem
nilem, с лист 1 на лист 5 попадают строки 4 и 5. В некоторых столбцах значение ячеек в строке 4 равны 3, а в строке 5 - 9 (выделено желтым на листе 1). Но копии этих строк на листе 5 почему то в тех же столбцах принимают значения не 3 и 9, а 9 и 9 (выделено желтым на листе 5).
nilem, с лист 1 на лист 5 попадают строки 4 и 5. В некоторых столбцах значение ячеек в строке 4 равны 3, а в строке 5 - 9 (выделено желтым на листе 1). Но копии этих строк на листе 5 почему то в тех же столбцах принимают значения не 3 и 9, а 9 и 9 (выделено желтым на листе 5).SergeyKorotun
Тогда так. Чтобы легче было проверить, будем записывать имена листов и по ним разбивать данные
[vba]
Код
Sub ertert22() Dim x, arr, i&, j&, k, s$, t() Sheets("Лист1").Activate x = Range("A1:BZ" & Cells(Rows.Count, 1).End(xlUp).Row).Value 'or CurrentRegion ReDim t(1 To UBound(x), 1 To 1) 'совпадают значения в P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY и не совпадают значения в AW arr = Array(16, 25, 26, 31, 33, 35, 37, 39, 41, 43, 45, 51) 'AW - 49, BZ - 78 With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 2 To UBound(x) For j = 0 To UBound(arr) s = s & x(i, arr(j)) & "~" Next j If .Exists(s) Then If .Item(s)(0) <> x(i, 49) Then t(i, 1) = "Лист5": t(.Item(s)(1), 1) = "Лист5" .Remove s Else t(i, 1) = "Лист3" End If Else .Item(s) = Array(x(i, 49), i) End If s = vbNullString Next i For Each k In .keys t(.Item(k)(1), 1) = IIf(.Item(k)(0) > 0, "Лист4", "Лист3") Next k End With t(1, 1) = "Sheet Number": Range("CA1").Resize(UBound(t)).Value = t() Call ertert112 End Sub
Sub ertert112() 'из Полезных приемов опять же <img rel="usm" src="http://www.excelworld.ru/sml2/smile.gif" border="0" align="absmiddle" alt=":)" /> Dim s$, r Application.ScreenUpdating = False With Sheets("Лист1").Range("A1").CurrentRegion .Parent.AutoFilterMode = False For Each r In .Offset(1).Resize(.Rows.Count - 1).Columns(79).Value 'CA - 79 If InStr(s, r) = 0 Then If Not Evaluate("ISREF('" & r & "'!A1)") Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = r Else Sheets(r).UsedRange.ClearContents 'листы очищаются здесь, поэтому свою очистку из RaskidkaPoListam уберите End If .AutoFilter 79, r .Resize(, .Columns.Count - 1).Copy Sheets(r).Range("A1") s = s & r End If Next .AutoFilter .Columns(.Columns.Count).ClearContents 'эту строку можно не выполнять (названия листов в столбце) End With: Application.ScreenUpdating = True End Sub
[/vba]
Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.
Тогда так. Чтобы легче было проверить, будем записывать имена листов и по ним разбивать данные
[vba]
Код
Sub ertert22() Dim x, arr, i&, j&, k, s$, t() Sheets("Лист1").Activate x = Range("A1:BZ" & Cells(Rows.Count, 1).End(xlUp).Row).Value 'or CurrentRegion ReDim t(1 To UBound(x), 1 To 1) 'совпадают значения в P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY и не совпадают значения в AW arr = Array(16, 25, 26, 31, 33, 35, 37, 39, 41, 43, 45, 51) 'AW - 49, BZ - 78 With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 2 To UBound(x) For j = 0 To UBound(arr) s = s & x(i, arr(j)) & "~" Next j If .Exists(s) Then If .Item(s)(0) <> x(i, 49) Then t(i, 1) = "Лист5": t(.Item(s)(1), 1) = "Лист5" .Remove s Else t(i, 1) = "Лист3" End If Else .Item(s) = Array(x(i, 49), i) End If s = vbNullString Next i For Each k In .keys t(.Item(k)(1), 1) = IIf(.Item(k)(0) > 0, "Лист4", "Лист3") Next k End With t(1, 1) = "Sheet Number": Range("CA1").Resize(UBound(t)).Value = t() Call ertert112 End Sub
Sub ertert112() 'из Полезных приемов опять же <img rel="usm" src="http://www.excelworld.ru/sml2/smile.gif" border="0" align="absmiddle" alt=":)" /> Dim s$, r Application.ScreenUpdating = False With Sheets("Лист1").Range("A1").CurrentRegion .Parent.AutoFilterMode = False For Each r In .Offset(1).Resize(.Rows.Count - 1).Columns(79).Value 'CA - 79 If InStr(s, r) = 0 Then If Not Evaluate("ISREF('" & r & "'!A1)") Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = r Else Sheets(r).UsedRange.ClearContents 'листы очищаются здесь, поэтому свою очистку из RaskidkaPoListam уберите End If .AutoFilter 79, r .Resize(, .Columns.Count - 1).Copy Sheets(r).Range("A1") s = s & r End If Next .AutoFilter .Columns(.Columns.Count).ClearContents 'эту строку можно не выполнять (названия листов в столбце) End With: Application.ScreenUpdating = True End Sub
[/vba]
Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.nilem
Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.
Проверил, ошибок не обнаружил. Пока не забыли и если не в облом, можете вставить комментарии в макрос. Особенно в те места, где применяются сокращения, которые не в любой документации найдешь, например в Item(s)(0) что значит (0).
Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.
Проверил, ошибок не обнаружил. Пока не забыли и если не в облом, можете вставить комментарии в макрос. Особенно в те места, где применяются сокращения, которые не в любой документации найдешь, например в Item(s)(0) что значит (0).SergeyKorotun
[/vba] в качестве элемента (Item) словаря мы записываем массив, состоящий из 2-х элементов: x(i, 49) - это значение столбца AW и i - номер строки массива х. Нумерация в таком массиве (который создается с помощью функции Array) начинается с 0, т.е. первый элемент с индексом ноль Item(s)(0), а второй элемент с индексом один Item(s)(1). (0) и (1) - это не сокращения, а индексы массива
использовать спойлеры с некоторых пор стало необязательно
Ну вот, только-только научился применять спойлер, а уже не надо
вот здесь: [vba]
Код
.Item(s) = Array(x(i, 49), i)
[/vba] в качестве элемента (Item) словаря мы записываем массив, состоящий из 2-х элементов: x(i, 49) - это значение столбца AW и i - номер строки массива х. Нумерация в таком массиве (который создается с помощью функции Array) начинается с 0, т.е. первый элемент с индексом ноль Item(s)(0), а второй элемент с индексом один Item(s)(1). (0) и (1) - это не сокращения, а индексы массива
Два xml файла сформированы одной программой. Один импортируется в excel с заголовками, второй без. В том что импортируется без заголовков одна строка, в другом - две. Но не по этой же причине? Что надо сделать, чтобы заголовки импортировались?
Два xml файла сформированы одной программой. Один импортируется в excel с заголовками, второй без. В том что импортируется без заголовков одна строка, в другом - две. Но не по этой же причине? Что надо сделать, чтобы заголовки импортировались?SergeyKorotun
Вы теперь все свои вопросы будете в одну тему сваливать?
Так задание то не изменилось. Если подкинуть схемы, то однострочный xml импортируется с заголовками, но данные из DECLARHEAD заполняются только в одну строку. Можно как то подправить схему, чтобы эти данные заполняли весь столбец?
[moder]Тема закрыта. Причина: нарушение п.п. 4, 5q Правил форума[/moder]
Вы теперь все свои вопросы будете в одну тему сваливать?
Так задание то не изменилось. Если подкинуть схемы, то однострочный xml импортируется с заголовками, но данные из DECLARHEAD заполняются только в одну строку. Можно как то подправить схему, чтобы эти данные заполняли весь столбец?
[moder]Тема закрыта. Причина: нарушение п.п. 4, 5q Правил форума[/moder]SergeyKorotun