Избавление от повторяющихся столбцов и строк (Excel) - VB

Узнай цену своей работы

Формулировка задачи:

Люди добрые, помогите. Руководством поставлена задача из неприличной базы данных в Екселе, содержащей повторяющиеся поля (в частности названия цехов завода) и повторяющиеся записи (коды статей расходования денежных средств, ну и сами суммы, конечно), сделать приличную, т.е. которая не содержит повторений. Функция {сумм(если(и т.д.))} не работает, или вернее работает некорректно, потому что необходимо суммировать не по одной строке или полю, а по массиву. По-моему, алгоритм прост до невозможности вроде того, что пока есть совпадения в базе данных то давай ищи их, суммируй и вставляй в заданное совпадение в другом листе, как закончились совпадения, так и циклу конец. Знал бы я синтаксис вижуал бейсик, сам бы написал, но к сожалению я его не знаю. Будьте добры помогите такую пользовательскую функцию написать, буду очень признателен.

Решение задачи: «Избавление от повторяющихся столбцов и строк (Excel)»

textual
Листинг программы
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2.   Dim StartR As Long, R As Long, StartC As Integer, C As Integer
  3.   Cancel = True
  4.   StartR = 2 'объединяем строки
  5.  Do While Cells(StartR, 2) <> ''
  6.    R = StartR + 1
  7.     Do While Cells(R, 2) <> ''
  8.      If Cells(R, 2) = Cells(StartR, 2) Then
  9.         C = 3
  10.         Do While Cells(1, C) <> ''
  11.          Cells(StartR, C) = Cells(StartR, C) + Cells(R, C)
  12.           C = C + 1
  13.         Loop
  14.         Rows(R).Delete
  15.       Else
  16.         R = R + 1
  17.       End If
  18.     Loop
  19.     StartR = StartR + 1
  20.   Loop
  21.   StartC = 3 'объединяем столбцы
  22.  Do While Cells(1, StartC) <> ''
  23.    C = StartC + 1
  24.     Do While Cells(1, C) <> ''
  25.      If Cells(1, C) = Cells(1, StartC) Then
  26.         R = 2
  27.         Do While Cells(R, 2) <> ''
  28.          Cells(R, StartC) = Cells(R, StartC) + Cells(R, C)
  29.           R = R + 1
  30.         Loop
  31.         Columns(C).Delete
  32.       Else
  33.         C = C + 1
  34.       End If
  35.     Loop
  36.     StartC = StartC + 1
  37.   Loop
  38. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы