Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск двух подобных строк и их взаимное удаление - Страница 3 - Мир MS Excel

Старая форма входа
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: китин, _Boroda_  
Поиск двух подобных строк и их взаимное удаление
SergeyKorotun Дата: Суббота, 07.09.2013, 16:26 | Сообщение № 41
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
И для чего такие сложные сортировки?
Надо условно разбить строки на группы с равными значениями в этих колонках и каждую строку в группе пронумеровать, начиная с 1. Если отсортировать, то реализовать нумерацию и просто и быстро: нужно сравнить текущую строку только с предыдущей.
 
Ответить
Сообщение
И для чего такие сложные сортировки?
Надо условно разбить строки на группы с равными значениями в этих колонках и каждую строку в группе пронумеровать, начиная с 1. Если отсортировать, то реализовать нумерацию и просто и быстро: нужно сравнить текущую строку только с предыдущей.

Автор - SergeyKorotun
Дата добавления - 07.09.2013 в 16:26
SergeyKorotun Дата: Суббота, 07.09.2013, 16:49 | Сообщение № 42
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Чтобы не было пустых строк в BN2, отсортируйте по BN
Это не выход. В следующей сортировке мне нужно будет упорядочивать строки и по СА
 
Ответить
Сообщение
Чтобы не было пустых строк в BN2, отсортируйте по BN
Это не выход. В следующей сортировке мне нужно будет упорядочивать строки и по СА

Автор - SergeyKorotun
Дата добавления - 07.09.2013 в 16:49
nilem Дата: Суббота, 07.09.2013, 18:21 | Сообщение № 43
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Все же 13 ключей сортировки - это лишка.
Как понял, сортировка - промежуточный этап решения какой-то глобальной задачи. Может, как-то по-другому подойти?

Бегло посмотрел всю тему. Словари работают с несортированными массивами так же хорошо, как и с сортированными.


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Суббота, 07.09.2013, 18:24
 
Ответить
СообщениеВсе же 13 ключей сортировки - это лишка.
Как понял, сортировка - промежуточный этап решения какой-то глобальной задачи. Может, как-то по-другому подойти?

Бегло посмотрел всю тему. Словари работают с несортированными массивами так же хорошо, как и с сортированными.

Автор - nilem
Дата добавления - 07.09.2013 в 18:21
SergeyKorotun Дата: Воскресенье, 08.09.2013, 01:38 | Сообщение № 44
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
В базу попала какая то запись. В последнем поле 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 - Воскресенье, 08.09.2013, 01:43
 
Ответить
СообщениеВ базу попала какая то запись. В последнем поле 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
Дата добавления - 08.09.2013 в 01:38
nilem Дата: Воскресенье, 08.09.2013, 08:07 | Сообщение № 45
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
"...две сроки, в которых совпадают значения в колонках P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY, и не совпадают значения в AW"
Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение"...две сроки, в которых совпадают значения в колонках P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY, и не совпадают значения в AW"
Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.

Автор - nilem
Дата добавления - 08.09.2013 в 08:07
SergeyKorotun Дата: Воскресенье, 08.09.2013, 14:46 | Сообщение № 46
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.

Если я правильно понял, вы предлагаете отсортировать лист по всем столбцам? AW также нужно включать в первую сортировку. Но так будет неверно. Например, в наименовании предприятия в 1 отчете была набрана буква "а" латиницей, а во втором кириллицей. Или руководитель или бухгалтер сменился.
Все же 13 ключей сортировки - это лишка.
Макрос, записанный макрорекордером, сортирует верно. Если внести в него изменения в определение граничной строки - в конце второй строки почему-то пустые значения.

PS Если заремировать вызов процедуры сортировки, а потом запустить ее вручную, сортируется верно. Как это пояснить.
 
Ответить
Сообщение
Может, надо все столбцы проверять от А до BZ (кроме AW)? Код, оказывается, написан, и со всеми столбцами было бы проще.

Если я правильно понял, вы предлагаете отсортировать лист по всем столбцам? AW также нужно включать в первую сортировку. Но так будет неверно. Например, в наименовании предприятия в 1 отчете была набрана буква "а" латиницей, а во втором кириллицей. Или руководитель или бухгалтер сменился.
Все же 13 ключей сортировки - это лишка.
Макрос, записанный макрорекордером, сортирует верно. Если внести в него изменения в определение граничной строки - в конце второй строки почему-то пустые значения.

PS Если заремировать вызов процедуры сортировки, а потом запустить ее вручную, сортируется верно. Как это пояснить.

Автор - SergeyKorotun
Дата добавления - 08.09.2013 в 14:46
nilem Дата: Воскресенье, 08.09.2013, 15:29 | Сообщение № 47
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
вот так попробуйте (дописал предыдущий код, обратите внимание на имена листов)
предполагается, что данные нах-ся на листе "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]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениевот так попробуйте (дописал предыдущий код, обратите внимание на имена листов)
предполагается, что данные нах-ся на листе "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]

Автор - nilem
Дата добавления - 08.09.2013 в 15:29
SergeyKorotun Дата: Воскресенье, 08.09.2013, 17:20 | Сообщение № 48
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Большое спасибо! То что надо.
Где можно чайнику почитать о 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]
К сообщению приложен файл: 3441575.rar (72.9 Kb)
 
Ответить
СообщениеБольшое спасибо! То что надо.
Где можно чайнику почитать о 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]

Автор - SergeyKorotun
Дата добавления - 08.09.2013 в 17:20
RAN Дата: Воскресенье, 08.09.2013, 17:43 | Сообщение № 49
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Где можно чайнику почитать о Dictionary?

Здесь


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Где можно чайнику почитать о Dictionary?

Здесь

Автор - RAN
Дата добавления - 08.09.2013 в 17:43
SergeyKorotun Дата: Воскресенье, 08.09.2013, 17:51 | Сообщение № 50
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Вопрос о сортировке снят. Случайно вызов процедуры сортировки попал в цикл и вызывался столько раз, сколько строк на листе 1.
Но почему не для всех обрабатываемых xml файлов сортировка глючила, не понятно.
 
Ответить
СообщениеВопрос о сортировке снят. Случайно вызов процедуры сортировки попал в цикл и вызывался столько раз, сколько строк на листе 1.
Но почему не для всех обрабатываемых xml файлов сортировка глючила, не понятно.

Автор - SergeyKorotun
Дата добавления - 08.09.2013 в 17:51
SergeyKorotun Дата: Понедельник, 09.09.2013, 11:11 | Сообщение № 51
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
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 расхождения выделены желтым цветом.
К сообщению приложен файл: 6884051.rar (77.4 Kb)
 
Ответить
Сообщение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
Дата добавления - 09.09.2013 в 11:11
nilem Дата: Понедельник, 09.09.2013, 14:44 | Сообщение № 52
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
В макросе мы проверяем столбцы P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY. Сравните с тем, в каких столбцах у вас желтая заливка (или столбцы не те, или заливка не там)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеВ макросе мы проверяем столбцы P, Y, Z, AE, AG, AI, AK, AM, AO, AQ, AS, AY. Сравните с тем, в каких столбцах у вас желтая заливка (или столбцы не те, или заливка не там)

Автор - nilem
Дата добавления - 09.09.2013 в 14:44
SergeyKorotun Дата: Вторник, 10.09.2013, 01:07 | Сообщение № 53
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
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
Дата добавления - 10.09.2013 в 01:07
nilem Дата: Вторник, 10.09.2013, 08:12 | Сообщение № 54
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Тогда так. Чтобы легче было проверить, будем записывать имена листов и по ним разбивать данные

Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеТогда так. Чтобы легче было проверить, будем записывать имена листов и по ним разбивать данные

Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.

Автор - nilem
Дата добавления - 10.09.2013 в 08:12
SergeyKorotun Дата: Вторник, 10.09.2013, 12:11 | Сообщение № 55
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.

Проверил, ошибок не обнаружил.
Пока не забыли и если не в облом, можете вставить комментарии в макрос. Особенно в те места, где применяются сокращения, которые не в любой документации найдешь, например в Item(s)(0) что значит (0).
 
Ответить
Сообщение
Постарайтесь проверить поскорее, потому что забывается, а еще раз вникать не буду.

Проверил, ошибок не обнаружил.
Пока не забыли и если не в облом, можете вставить комментарии в макрос. Особенно в те места, где применяются сокращения, которые не в любой документации найдешь, например в Item(s)(0) что значит (0).

Автор - SergeyKorotun
Дата добавления - 10.09.2013 в 12:11
nilem Дата: Четверг, 12.09.2013, 18:08 | Сообщение № 56
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
вот здесь:
[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) - это не сокращения, а индексы массива

Цитата (Serge_007, Вторник, 10.09.2013, 11:44 # 55)
использовать спойлеры с некоторых пор стало необязательно

Ну вот, только-только научился применять спойлер, а уже не надо :)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениевот здесь:
[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) - это не сокращения, а индексы массива

Цитата (Serge_007, Вторник, 10.09.2013, 11:44 # 55)
использовать спойлеры с некоторых пор стало необязательно

Ну вот, только-только научился применять спойлер, а уже не надо :)

Автор - nilem
Дата добавления - 12.09.2013 в 18:08
SergeyKorotun Дата: Понедельник, 23.09.2013, 12:39 | Сообщение № 57
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Два xml файла сформированы одной программой. Один импортируется в excel с заголовками, второй без. В том что импортируется без заголовков одна строка, в другом - две. Но не по этой же причине? Что надо сделать, чтобы заголовки импортировались?
К сообщению приложен файл: 04250002466010J.xml (2.0 Kb) · 04250035672074J.xml (2.6 Kb)
 
Ответить
СообщениеДва xml файла сформированы одной программой. Один импортируется в excel с заголовками, второй без. В том что импортируется без заголовков одна строка, в другом - две. Но не по этой же причине? Что надо сделать, чтобы заголовки импортировались?

Автор - SergeyKorotun
Дата добавления - 23.09.2013 в 12:39
Pelena Дата: Понедельник, 23.09.2013, 13:25 | Сообщение № 58
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация: 4558 ±
Замечаний: ±

Excel 365 & Mac Excel
SergeyKorotun, Вы теперь все свои вопросы будете в одну тему сваливать?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеSergeyKorotun, Вы теперь все свои вопросы будете в одну тему сваливать?

Автор - Pelena
Дата добавления - 23.09.2013 в 13:25
SergeyKorotun Дата: Понедельник, 23.09.2013, 13:53 | Сообщение № 59
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Вы теперь все свои вопросы будете в одну тему сваливать?
Так задание то не изменилось.
Если подкинуть схемы, то однострочный xml импортируется с заголовками, но данные из DECLARHEAD заполняются только в одну строку. Можно как то подправить схему, чтобы эти данные заполняли весь столбец?

[moder]Тема закрыта. Причина: нарушение п.п. 4, 5q Правил форума[/moder]
К сообщению приложен файл: J0500103.xsd (7.7 Kb) · common_types.xsd (64.4 Kb)
 
Ответить
Сообщение
Вы теперь все свои вопросы будете в одну тему сваливать?
Так задание то не изменилось.
Если подкинуть схемы, то однострочный xml импортируется с заголовками, но данные из DECLARHEAD заполняются только в одну строку. Можно как то подправить схему, чтобы эти данные заполняли весь столбец?

[moder]Тема закрыта. Причина: нарушение п.п. 4, 5q Правил форума[/moder]

Автор - SergeyKorotun
Дата добавления - 23.09.2013 в 13:53
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!