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

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

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

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

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

textual
Листинг программы
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim StartR As Long, R As Long, StartC As Integer, C As Integer
  Cancel = True
  StartR = 2 'объединяем строки
  Do While Cells(StartR, 2) <> ''
    R = StartR + 1
    Do While Cells(R, 2) <> ''
      If Cells(R, 2) = Cells(StartR, 2) Then
        C = 3
        Do While Cells(1, C) <> ''
          Cells(StartR, C) = Cells(StartR, C) + Cells(R, C)
          C = C + 1
        Loop
        Rows(R).Delete
      Else
        R = R + 1
      End If
    Loop
    StartR = StartR + 1
  Loop
  StartC = 3 'объединяем столбцы
  Do While Cells(1, StartC) <> ''
    C = StartC + 1
    Do While Cells(1, C) <> ''
      If Cells(1, C) = Cells(1, StartC) Then
        R = 2
        Do While Cells(R, 2) <> ''
          Cells(R, StartC) = Cells(R, StartC) + Cells(R, C)
          R = R + 1
        Loop
        Columns(C).Delete
      Else
        C = C + 1
      End If
    Loop
    StartC = StartC + 1
  Loop
End Sub

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


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

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

6   голосов , оценка 4 из 5
Похожие ответы