Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Повторяющиеся значения в массиве / 25 сообщений из 49, страница 1 из 2
01.08.2005, 09:09
    #33193500
SNV.1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Дорогие все,

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

Пример:
Массив 1
Сахар - 6 кг
Мука - 100 кг
Рис - 10 кг
Сахар - 7 кг
Рис - 2 кг

Массив 2
Массив 1
Сахар - 13 кг
Мука - 100 кг
Рис - 12 кг
...
Рейтинг: 0 / 0
01.08.2005, 12:34
    #33194103
Повторяющиеся значения в массиве
Код: plaintext
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.
Sub TestX()
    Dim rng As Range
    Dim lngI As Long
    Dim lngRows As Long
    Dim sum As Long
    
    Set rng = Cells( 1 ,  1 ).CurrentRegion
    
    lngRows = rng.Rows.Count
    
    ' Сортируем данные.
    rng.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:= 1 , MatchCase:=False, Orientation:=xlTopToBottom
    
    sum =  0 
    
    On Error Resume Next
    
    For lngI =  1  To lngRows
        If rng.Cells(lngI,  1 ).Value = rng.Cells(lngI,  1 ).Offset( 1 ,  0 ).Value Then
            sum = rng.Cells(lngI,  1 ).Offset( 0 ,  1 ).Value + rng.Cells(lngI,  1 ).Offset( 1 ,  1 )
            rng.Cells(lngI,  1 ).Offset( 0 ,  3 ) = sum
            rng.Cells(lngI,  1 ).Offset( 0 ,  2 ) = rng.Cells(lngI,  1 ).Value
        ElseIf rng.Cells(lngI,  1 ).Value <> rng.Cells(lngI,  1 ).Offset( 1 ,  0 ).Value _
          And rng.Cells(lngI,  1 ).Value <> rng.Cells(lngI,  1 ).Offset(- 1 ,  0 ).Value Then
            sum = rng.Cells(lngI,  1 ).Offset( 0 ,  1 ).Value
            rng.Cells(lngI,  1 ).Offset( 0 ,  2 ) = rng.Cells(lngI,  1 ).Value
            rng.Cells(lngI,  1 ).Offset( 0 ,  3 ) = sum
        End If
    Next lngI
    
    Range("C:D").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub

Результат (см. рисунок).
...
Рейтинг: 0 / 0
01.08.2005, 12:36
    #33194106
Повторяющиеся значения в массиве
А если проще.

Импортировать данные в Access. Сделать запрос с группировкой по продуктам и суммой по весу. Экпортировать данные.
...
Рейтинг: 0 / 0
01.08.2005, 12:55
    #33194163
talgat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
А еще можно сделать сводную таблицу
...
Рейтинг: 0 / 0
02.08.2005, 15:56
    #33197098
SNV.1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
А можно эту задачу решить как нибудь не выгружая данные на лист Excel'я?

Импорт в Access, конечно тоже решит задачу, но слишком громоздко
...
Рейтинг: 0 / 0
02.08.2005, 16:49
    #33197305
Повторяющиеся значения в массиве
SNV.1979А можно эту задачу решить как нибудь не выгружая данные на лист Excel'я?
А где у тебя эти данные находятся?
...
Рейтинг: 0 / 0
02.08.2005, 17:07
    #33197392
Toking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Думаю, с этим нуна на форум VB :-)

Код: plaintext
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.
34.
35.
36.
Sub AAA()
  Dim Arr( 4 ,  1 ) As Variant
  Dim Res( 4 ,  1 ) As Variant
  Dim i As Integer, j As Integer, k As Integer, c As Integer

  'Заполняем массив
  Arr( 0 ,  0 ) = "Сахар":   Arr( 0 ,  1 ) =  6 
  Arr( 1 ,  0 ) = "Мука":    Arr( 1 ,  1 ) =  100 
  Arr( 2 ,  0 ) = "Рис":      Arr( 2 ,  1 ) =  10 
  Arr( 3 ,  0 ) = "Сахар":   Arr( 3 ,  1 ) =  7 
  Arr( 4 ,  0 ) = "Рис":      Arr( 4 ,  1 ) =  2 

  'Решаем
  c = - 1 
  For i =  0  To  4 
    k = - 1 
    For j =  0  To c
      If Arr(i,  0 ) = Res(j,  0 ) Then
        k = j
        Exit For
      End If
    Next
    If k = - 1  Then
      c = c +  1 
      Res(c,  0 ) = Arr(i,  0 ):  Res(c,  1 ) = Arr(i,  1 )
    Else
      Res(k,  1 ) = Res(k,  1 ) + Arr(i,  1 )
    End If
  Next


  'Выводим результат
  For i =  0  To c
    Debug.Print Res(i,  0 ) & " - " & Res(i,  1 ) & " кг "
  Next

End Sub

зы: учиться нужно своими силами
...
Рейтинг: 0 / 0
03.08.2005, 12:05
    #33198728
Повторяющиеся значения в массиве
Тоже накидал.

Код: plaintext
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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Sub GroupBy()
    Dim varIn( 1  To  6 ,  1  To  2 ) As Variant
    Dim varOut( 1  To  6 ,  1  To  2 ) As Variant
    Dim intI As Integer
    Dim intJ As Integer
    Dim intK As Integer
    Dim bln As Boolean
    
    varIn( 1 ,  1 ) = "Сахар"
    varIn( 2 ,  1 ) = "Мука"
    varIn( 3 ,  1 ) = "Рис"
    varIn( 4 ,  1 ) = "Сахар"
    varIn( 5 ,  1 ) = "Рис"
    varIn( 6 ,  1 ) = "Рис"
    
    varIn( 1 ,  2 ) =  6 
    varIn( 2 ,  2 ) =  100 
    varIn( 3 ,  2 ) =  10 
    varIn( 4 ,  2 ) =  7 
    varIn( 5 ,  2 ) =  2 
    varIn( 6 ,  2 ) =  8 

    intK =  1 
    bln = False

    For intI = LBound(varIn,  1 ) To UBound(varIn,  1 )
        For intJ = LBound(varOut,  1 ) To UBound(varIn,  1 )
            If varIn(intI,  1 ) <> varOut(intJ,  1 ) Then
                bln = False
            Else
                bln = True
                Exit For
            End If
        Next intJ
        If Not bln Then
            varOut(intK,  1 ) = varIn(intI,  1 )
            varOut(intK,  2 ) = varIn(intI,  2 )
            intK = intK +  1 
        Else
            varOut(intJ,  2 ) = varOut(intJ,  2 ) + varIn(intI,  2 )
        End If
    Next intI
            
    For intK = LBound(varOut,  1 ) To UBound(varOut,  1 )
        If Not IsEmpty(varOut(intK,  1 )) Then
            Debug.Print varOut(intK,  1 ) & " - " & varOut(intK,  2 ) & " кг."
        End If
    Next
End Sub
...
Рейтинг: 0 / 0
03.08.2005, 12:52
    #33198884
MX--ALEX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
SNV.1979Дорогие все,

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

Пример:
Массив 1
Сахар - 6 кг
Мука - 100 кг
Рис - 10 кг
Сахар - 7 кг
Рис - 2 кг

Массив 2
Массив 1
Сахар - 13 кг
Мука - 100 кг
Рис - 12 кг

подсоедини EXCEL к базе данных например M3-LITE (Free)
инструмент на сайте
http://cell-soft.eclub.lv/
...
Рейтинг: 0 / 0
03.08.2005, 21:15
    #33200440
Rustam-27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
А можно и не прибегая к vba!

1. Список сортируется по наименованию
2. Далее выделяется первое упоминание нового наименования
3. Определяется сколько раз оно идет подряд
4. Складывается сумма по наименованию

все через формулы Excel

файл вложен.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
09.08.2008, 16:50
    #35479808
Stas_stas_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Rustam-27, у меня тоже есть вопрос по повторяющимся значениям. Твои формулы очень интересны, не мог бы ты и мне помочь?

топег здесь
...
Рейтинг: 0 / 0
10.08.2008, 01:13
    #35480021
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
см. приложение, хотя в 5-м задании я не рекомендую использовать формулы из-за длительности пересчета.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
10.08.2008, 12:07
    #35480102
Stas_stas_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
KL, это невероятно! Во-первых, спасибо огромное за такие формулы! И хотя и я сам был на верному пути - понимал, что в 4-м задании нужно как-то оперировать МАКС и ЕСЛИ, но вот до такого не допёр; ну и 5-е я никогда бы не сделал именно формулой (сделал почти по аналогии как предлагал Рустам по другому заданию: сортировка по возрастанию, пошаговое сравнение, при совпадении - возвращается заданное число в другой столбец, автофильтр по возвращаемому значению), но я бы до такого как ты никогда не допёр :D.


А во-вторых... Не мог бы ты начинающему человеку пояснить:
1. Какую функцию выполняет "*" вот в этой твоей формуле: =МАКС(ИНДЕКС((Исходные!$B$4:$B$3402=B41)*Исходные!$C$4:$C$3402;0))
2. В каком направлении надо начать думать, чтобы самому суметь написать такую форумулу как в 5-м задании?))))
...
Рейтинг: 0 / 0
27.10.2008, 19:37
    #35618902
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Задание 5 можно значительно ускорить (см. вложение...)
KL (XL)см. приложение, хотя в 5-м задании я не рекомендую использовать формулы из-за длительности пересчета.
А как бы ты предложил сделать по другому ?
...
Рейтинг: 0 / 0
31.10.2008, 09:06
    #35626934
IgorPol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Может быть проще всего использовать функцию "Итоги"? И быстро и верно.
...
Рейтинг: 0 / 0
31.10.2008, 10:11
    #35627076
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
А правда, чё бы не итогами: сортируем по алфавиту и итогами при изменении названия выставляем сумму... Не для всех случаев, зато самый быстрый способ
...
Рейтинг: 0 / 0
31.10.2008, 10:38
    #35627154
Algol70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Если у вас Excel-овский файл то используйте функцию =SUMIF()
...
Рейтинг: 0 / 0
31.10.2008, 10:56
    #35627221
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
не, Algol70, вы немного не то сделали..... Надо выбрать повторяющиеся значения, а не суммы по группам
...
Рейтинг: 0 / 0
31.10.2008, 11:00
    #35627231
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
PlanBА правда, чё бы не итогами: сортируем по алфавиту и итогами при изменении названия выставляем сумму... Не для всех случаев, зато самый быстрый способ Выложи пример..., а то что-то я не могу понять как с итогами сделать
...
Рейтинг: 0 / 0
31.10.2008, 16:42
    #35628634
IgorPol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
A-NikPlanBА правда, чё бы не итогами: сортируем по алфавиту и итогами при изменении названия выставляем сумму... Не для всех случаев, зато самый быстрый способ Выложи пример..., а то что-то я не могу понять как с итогами сделать

Вот примерчик
...
Рейтинг: 0 / 0
31.10.2008, 16:46
    #35628656
IgorPol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Файлик что-то не отправился
...
Рейтинг: 0 / 0
31.10.2008, 17:00
    #35628725
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
Опять не то! Требуется получить повторяющиеся значения в большом массве! (см. вложения, что были выше)
...
Рейтинг: 0 / 0
14.11.2008, 20:12
    #35655412
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
KL (XL)см. приложение, хотя в 5-м задании я не рекомендую использовать формулы из-за длительности пересчета.
Что именно KL имел в виду он так и не ответил, но я думаю, что что-нибудь из этого (см.вложение). Всего мне удалось придумать 13 вариантов решения данной задачи !! Зацените!
...
Рейтинг: 0 / 0
14.11.2008, 20:12
    #35655413
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
...
Рейтинг: 0 / 0
14.11.2008, 20:13
    #35655416
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяющиеся значения в массиве
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Повторяющиеся значения в массиве / 25 сообщений из 49, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]