Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912

Объединить ячейки с повторяющимися значениями

21.05.2014, 10:59. Показов 2727. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день..
Делаю выгрузку в Excel, на рисунке показано что получается после выгрузки, ( эти заказы все разные, просто имеют общее контактное лицо и некоторые другие данные ) идея это объединить эти ячейки в одну..

для выгрузки использую вот этот код
Кликните здесь для просмотра всего текста
Visual Basic
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Private Function Oplaty()
Dim XL As Object, XLBook As Object, XLSheet As Object
    Dim ClientDir As String, TmplFile As String, OutputDir As String, OutputFile As String, Pos As Long, df As String
    Dim rst As Object, SubRst As Object, StrN As Long
    Dim opl As String
    Dim LogN As Integer, VzakN As Integer, Nach As Integer
 
'    Set rst = CurrentDb.OpenRecordset("SELECT * FROM ÎïëàòûÄàòû ORDER BY Íîìåð", dbOpenDynaset, dbSeeChanges)
 
Set rst = CurrentDb.OpenRecordset("SELECT Çàêàç.Íîìåð, Çàêàç.Ïîñòàâùèê, Çàêàç.ÍîìåðÂýä, Îïëàòà.Ñóììà, Îïëàòà.Ïîäïèñàí, " _
& " Îïëàòà.Ïîëó÷åíû, [Èòîãîâàÿ ñóììà çàêàçà].ñóìì, [Ñóììà]/[ñóìì] AS Ïðîöåíòû" _
& " FROM (Çàêàç INNER JOIN Îïëàòà ON Çàêàç.Íîìåð = Îïëàòà.Çàêàç)" _
& " INNER JOIN [Èòîãîâàÿ ñóììà çàêàçà] ON Çàêàç.Íîìåð = [Èòîãîâàÿ ñóììà çàêàçà].Íîìåð", dbOpenDynaset, dbSeeChanges)
 
    TmplFile = "\\server.az\Data\Îòäåë çàêóïîê\! ABS\Øàáëîíû\Îïëàòû.xlsx"
 
    sPatchtDir = Environ("ALLUSERSPROFILE") & "\Îïëàòû"
        If Dir$(sPatchtDir, vbDirectory) = "" Then
        MkDir sPatchtDir
    End If
 
    OutputFile = sPatchtDir & "\Îïëàòû.xlsx"
    FileCopy TmplFile, OutputFile
           ''Ñîçäàòü îáúåêòû Excel
           
'On Error GoTo OLEError
    Set XL = CreateObject("Excel.Application")
 
'On Error GoTo AnyError
    Set XLBook = XL.Workbooks.Open(OutputFile)
 
           ''Âûâîä â êîíêðåòíûé øàáëîí
 
           ''1-é ëèñò Çàïîëíÿåì øàïêó
        Set XLSheet = XLBook.Worksheets(1)
        XLSheet.Activate
        XLSheet.Cells(1, 1).value = "Íàçâàíèå êîìïàíèè"
        XLSheet.Cells(1, 2).value = "Êîíòàêòíîå ëèöî"
        XLSheet.Cells(1, 3).value = "¹ çàêàçà"
        XLSheet.Cells(1, 4).value = "Èíâîéñ ïî ïðîåêòó"
        XLSheet.Cells(1, 5).value = "Ñóììà èíâîéñà"
        XLSheet.Cells(1, 6).value = "Ñóììà ê îïëàòå"
        XLSheet.Cells(1, 7).value = "ïðîöåíòíàÿ ÷àñòü"
        XLSheet.Cells(1, 8).value = "Äàòà ïîäà÷è ñ÷åòà ìåíåäðåðîì ÎÌÇ"
        XLSheet.Cells(1, 9).value = "Äàòà ïîäòâåðæäåíèÿ èíâîéñà Ñòðîéêîâûì Ì.Ì."
        XLSheet.Cells(1, 10).value = "Äàòà ïåðåäà÷è ïîäòâåðæäåííîãî èíâîéñà â îòäåë ÂÝÄ"
        XLSheet.Cells(1, 11).value = "Äàòà îïëàòû"
        XLSheet.Cells(1, 12).value = "Äàòà ïîëó÷åíèå îïëàòû"
 
           ''Âûãðóçêà заказов
 
        StrN = 2
        Do While Not rst.EOF
'        XLSheet.Cells(StrN, 1) = rst![]
        XLSheet.Cells(StrN, 2) = rst![Ïîñòàâùèê]
        XLSheet.Cells(StrN, 3) = rst![ÍîìåðÂÝÄ]
'        XLSheet.Cells(StrN, 4) = rst![]
        XLSheet.Cells(StrN, 5) = rst![ñóìì]
        XLSheet.Cells(StrN, 6) = rst![Ñóììà]
        XLSheet.Cells(StrN, 7) = rst![Ïðîöåíòû]
'        XLSheet.Cells(StrN, 8) = rst![]
'        XLSheet.Cells(StrN, 9) = rst![]
'        XLSheet.Cells(StrN, 10) = rst![]
        XLSheet.Cells(StrN, 11) = rst![Ïîäïèñàí]
        XLSheet.Cells(StrN, 12) = rst![Ïîëó÷åíû]
        Postavshik = rst![Ïîñòàâùèê]
            rst.MoveNext
            StrN = StrN + 1
        Loop
    
    XLBook.Save
    XLBook.Application.ActiveWorkbook.RefreshAll
    XL.Visible = True
    Oplaty = True
    Exit Function
 
'OLEError:
'    MsgBox "Microsoft Excel - íå óñòàíîâëåí.", , "Îøèáêà âûâîäà ôîðìû " & TmplName
'    Oplaty = False
'    Exit Function
'
'AnyError:
'    MsgBox "Íåîïîçíàííàÿ îøèáêà.", , "Îøèáêà âûâîäà ôîðìû " & TmplName
'    Oplaty = False
'    Exit Function
End Function


Подскажите пожалуйста, как можно объединить эти ячейки?
Миниатюры
Объединить ячейки с повторяющимися значениями  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2014, 10:59
Ответы с готовыми решениями:

Условия отбора с повторяющимися значениями
Пересмотрел форум, но соответствующего случая не нашел, сам же полностью запутался. Ситуация : Имею разные изделия, например Халат1,...

Заполнение матрицы не повторяющимися значениями
Доброго времени суток ! Мне необходимо заполнять 4 матрицы размерности 6 на 6 ,случайными значениями в промежутке от 0 до 35 включительно ,...

Перебор двух массивов с повторяющимися значениями
У меня есть таблица со строками, в строках выпадающий список и поле с именем "count". У всех полей уникальное имя типа массива. ...

4
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
21.05.2014, 11:33
Возможно я ошибаюсь, но мне кажется, что в запросе достаточно поставить Distinct
Visual Basic
1
Set rst = CurrentDb.OpenRecordset("SELECT Distinct Заказ.Номер ...
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
21.05.2014, 16:22  [ТС]
mobile, Distinct не подходит,

я пытался сделать все следующим образом
в Excel записал макрос на объединение ячеек
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Макрос3()
'
' Макрос3 Макрос
'
 
'
    Range("B22:B26").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
End Sub

а потом взял этот код и пытался приладить к своему в Access, но запутался и не получилось у меня ничего

Добавлено через 4 часа 28 минут
Вот этот код объединяет ячейки
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
   Dim MyRange As Excel.Range
 
      Set MyRange = XLSheet.Range(XLSheet.Cells(2, 2), XLSheet.Cells(22, 2))
      MyRange.Merge

но теперь у меня проблема, как логически дальше написать код
т.е вот если смотреть по рисунку выгрузки (См.рис выше): там с начала идет EILEEN потом Vanessa
и по идеи нужно какую то проверку делать, допустим если запись EILEEN повторяется в ячейки, тогда их объединить, если повторяется Vanessa - объединить и т.д

Опытные люди подскажите что тут можно придумать..
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
30.05.2014, 15:36  [ТС]
Добрый день..
возникла сложность с объединением повторяющихся значений в ячейках..
если смотреть по рисунку то можно видеть что первые два столбца у меня получилось объединять повторяющиеся ячейки, а вот дальше какой то тупик

ни как не соображу как правильно написать условия
Кликните здесь для просмотра всего текста
Visual Basic
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
   ''код...           
    nomNach = Nz(nomPos)
        XLSheet.Cells(StrN, 3) = rst![НомерВЭД]
                  nomPos = Nz(rst![НомерВЭД])
                  '' NachalYache - это переменная от которой начнется объединение
                  ''StrN - это на какой ячейки объединение закончиться 
 
            If nomPos = "" Then  ''тут думал сохранять номер последней ячейки в которой ничего не было 
                 NachalYache = StrN - 1
            End If
            
           'тут думал сохранять номер последней ячейки в которой есть данные
           ''вот тут то скорее всего и есть проблема, по условию nomPos действительно не равна пустоте и nomPos <> nomNach
            '' и по этому получается NachalYache будет перезаписываться.. т.е я уже не получу начальную цифру с которой должно быть объединение, а полу предпоследнюю цифру
            '' и получиться будут пропущены все повторяющиеся ячейки, а объединены будут только две последние
            If nomPos <> "" And nomPos <> nomNach Then  
                 NachalYache = StrN - 1 
            End If
 
              If nomNach <> nomPos And nomPos <> "" Then
'                  NomerVedNach = StrN - NachalYache
                  Set MyNomVed = XLSheet.Range(XLSheet.Cells(NachalYache, 3), XLSheet.Cells(StrN, 3))
 
                  MyNomVed.Application.DisplayAlerts = False ''Убираем сообщение: Объединение ячеек приведет к потере всех значений, кроме левого верхнего
                  MyNomVed.Merge
                  MyNomVed.WrapText = True   ''Переносить по словам
            End If
''код...



вопрос по третьему столбцу: нужно, если пустая ячейка, то просто пропускать ( не объединять ), если пошли повторяющиеся, тогда их объединить

может у кого есть своя версия как это логически построить, предлагайте свои варианты, буду рад услышать,
Миниатюры
Объединить ячейки с повторяющимися значениями  
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
18.06.2014, 09:57  [ТС]
Доброго времени суток..

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

в архиве упрощенная БД, кого не затруднит посмотрите, может какие мысли ( свои попытки за комментировал, объединялись только первые два столбца, а нужно первые 5 )

Уважаемые нужна хоть какая помощь, хоть какие подсказки, я в полном отчаяние
Вложения
Тип файла: rar Templates.rar (77.6 Кб, 9 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2014, 09:57
Помогаю со студенческими работами здесь

Парсинг фразы между повторяющимися значениями
Здравствуйте.Недавно при парсинге столкнулся с такой проблемой.Я получаю всю страницу сайта в stringlist На которой есть текст ...

Запрос на поиск обьектов с повторяющимися значениями определенного поля
Есть датасет созданный автоматически через добавление источника данных к дгв, база Access. В нём всего 1 таблица, в ней есть поле...

Как в Excel удалить строки с повторяющимися значениями в определенном столбце
Пожалуйста, подскажите - есть таблица. Нужно - если значение (текстовое) в ячейке С2 = С1, удалить строку 2. И так до конца таблицы.

Удалить из списка элементы с повторяющимися более одного раза значениями
Здравствуйте! Помогите пожалуйста! Есть задание: Удалить из списка элементы с повторяющимися более одного раза значениями. ...

Нужно вставить в таблицу данные с повторяющимися primary key, но разными значениями
create table Аптеки ( КодАптеки int not null, КодПрепарата int not null, Название nvarchar(50), Номер smallint not null, Запас...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru