Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2010, 15:08   #1
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
Вопрос Подсчет и вывод результата...

Знач так... Есть таблица... В ней есть столбцы, которые в ручную заполняются...
Они имеют вид типа: 6,5,8,4,8,8,5,2,-7,-4,
В результате общее количество подсчета должно вывести в итог формулой...
---------------------------------------------------
например есть
4,5,5,7, и -4,-5,8,
должно вывести
5,7,8,
Вообщем нужно подсчитать приход/расход...
Т.е если есть 2 и -2 то они взаимо уничтожаются...
---------------------------------------------------
Пример можно посмотреть на скрине...

---------------------------------------------------
Помогите пожалуйста!
sew960i вне форума Ответить с цитированием
Старый 24.01.2010, 15:44   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте sew960i.
если допускается применение пользовательских функций, сумму чисел ячейки разделенных запятой, можно получить подобной:
Код:
Function sumCount(s) As Long
Dim sArr() As String, i%
If Len(s) > 0 Then
    sArr = Split(s, ",")
    For i = 0 To UBound(sArr)
        If Not Val(sArr(i)) = 0 Then sumCount = sumCount + CDbl((sArr(i)))
    Next
End If
End Function
применяться будет так: =sumCount(D2)
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 24.01.2010, 16:39   #3
javvva
Пользователь
 
Аватар для javvva
 
Регистрация: 23.01.2010
Сообщений: 70
По умолчанию

вряд ли тут подойдут суммы.
javvva вне форума Ответить с цитированием
Старый 24.01.2010, 16:49   #4
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

Спасибо. Но вы не совсем правильно поняли мой вопрос...
Мне нужно найти не сумму а результат пересчета, как показано на изображении выше...
Пересчет значений под датами и вывод результата в "Итого"...
Например:
--------------------------------------------------------
12.01.2010 | 13.01.2010 | Итого
4,-6,9,8,7, | 3,-4,7,6,2, | 2,3,7,7,8,
--------------------------------------------------------
И к тому же желательно чтоб в итоге вывелось число в порядке возрастания...
sew960i вне форума Ответить с цитированием
Старый 24.01.2010, 17:06   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Это реальная таблица,или задание от студентов.
Очень смахивает на поиск алгоритма.
А свои какие соображения по этому вопросу
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.01.2010, 17:24   #6
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

Это реальная таблица.
sew960i вне форума Ответить с цитированием
Старый 24.01.2010, 19:11   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Алгоритм оказался непростым....

Проверяйте:




Обратите внимание на формулы (применена пользовательская функция)
Код:
  Ячейка: G1      Формула  (стиль A1):   =Остаток(A1:F1)
                  Формула  (стиль R1C1): =Остаток(RC[-6]:RC[-1])
Вот весь код:

Код:
Function Остаток(ByRef ra As Range) As String
    Dim cell As Range, t As String, n As String, txt As String
    For Each cell In ra.Cells: txt = txt & cell.Text & ",": Next cell
    txt = Replace(txt, ",,", ","): txt = Replace(txt, " ", "")
    arr = Split(txt, ",")
    For i = LBound(arr) To UBound(arr)
        t = arr(i)
        If Len(t) Then
            n = "-" & t: n = Replace(n, "--", "")
            For j = i + 1 To UBound(arr)
                If arr(j) = n Then arr(i) = "": arr(j) = "": Exit For
            Next j
        End If
    Next i
    MyQuickSort arr: txt = Join(arr, ",")
    txt = Replace(txt, ",", " "): txt = Application.Trim(txt) & " "
    Остаток = Replace(txt, " ", ",")
End Function

Sub MyQuickSort(arr, Optional First As Long = -1, Optional Last As Long = -1)
    On Error Resume Next    ' Быстрая сортировка, [Q]uick [S]ort
    Dim i As Long, j As Long, MidEl As Variant, t As Variant
    First = IIf(First = -1, LBound(arr), First)
    Last = IIf(Last = -1, UBound(arr), Last)
    i = First: j = Last: MidEl = arr((First + Last) \ 2)
    Do While i <= j
        If arr(i) < MidEl Then
            i = i + 1
        Else
            If arr(j) > MidEl Then
                j = j - 1
            Else
                t = arr(i): arr(i) = arr(j): arr(j) = t: i = i + 1: j = j - 1
            End If
        End If
    Loop
    If First < j Then Call MyQuickSort(arr, First, j)
    If i < Last Then Call MyQuickSort(arr, i, Last)
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 24.01.2010, 19:28   #8
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
Радость

БОЛЬШОЕ СПАСИБО!!! РАБОТАЕТ!!!
sew960i вне форума Ответить с цитированием
Старый 31.01.2010, 12:17   #9
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
Вопрос Хмм....

А как сделать так же, только чтоб числа сортировались в таком порядке:
8,9,0,1,2,3,4,5,6,7,
sew960i вне форума Ответить с цитированием
Старый 31.01.2010, 12:30   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от sew960i Посмотреть сообщение
А как сделать так же, только чтоб числа сортировались в таком порядке:
8,9,0,1,2,3,4,5,6,7,
А что это за порядок такой?
На словах объясните, по какому принципу мы получаем такую последовательность при "сортировке"
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос в БД и вывод результата Nice42ru Помощь студентам 10 05.11.2009 09:47
Поиск и вывод результата на другой лист!!! Ilnour1986 Microsoft Office Excel 12 23.10.2009 11:38
Вывод результата в программу блокнот Печальный цыган Помощь студентам 2 15.06.2009 17:08
Операции со строками, вывод результата в 10 и 16 сис-ме счисления Sirega Паскаль, Turbo Pascal, PascalABC.NET 0 24.12.2008 16:36
Вывод результата по столбцам Mary_star SQL, базы данных 4 03.03.2008 13:15