Избавление от повторяющихся столбцов и строк (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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д