Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0creator0
1

Подскажите что в макросе не так?

15.09.2011, 23:37. Просмотров 952. Ответов 5
Метки нет (Все метки)

С нелегким вопросом обращаюсь за помощью, не пойму где засела ошибка :
Visual Basic
1
         If InStr(b(m, 3), "l=") > 0 Then
Все правильно происходит, кроме одного одинаковые строчки, но с разными c(n, 4) - почему то не суммируются.
c(n, 5) и (n, 6) отсутствуют должны отсутствовать.
Visual Basic
1
2
3
4
5
6
If unique(n) = b(m, 2) & "\" & b(m, 3) Then
                    c(n, 1) = Trim(Split(b(m, 3), "l=")(0)) & Chr(10) & b(m, 5)
                    c(n, 2) = b(m, 2)
                    c(n, 4) = c(n, 4) + (Trim(Split(b(m, 3), "l=")(1)) / 1000) * b(m, 4)
                    c(n, 5) = 0
                    c(n, 6) = 0
А там где нету знака равно, все происходит правильно, одинаковые строчки друг с другом суммируются
Visual Basic
1
2
3
4
5
6
                    If unique(n) = b(m, 2) & "\" & b(m, 3) Then
                    c(n, 1) = b(m, 3) & Chr(10) & b(m, 5)
                    c(n, 2) = b(m, 2)
                    c(n, 4) = c(n, 4) + b(m, 4)
                    c(n, 5) = c(n, 5) + b(m, 6)
                    c(n, 6) = c(n, 6) + b(m, 7)
Подскажите пожалуйста почеум макрос работает но не корректно.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
For n = 1 To unique.Count
        For m = 1 To UBound(b)
         If InStr(b(m, 3), "l=") > 0 Then
                    If unique(n) = b(m, 2) & "\" & b(m, 3) Then
                    c(n, 1) = Trim(Split(b(m, 3), "l=")(0)) & Chr(10) & b(m, 5)
                    c(n, 2) = b(m, 2)
                    c(n, 4) = c(n, 4) + (Trim(Split(b(m, 3), "l=")(1)) / 1000) * b(m, 4)
                    c(n, 5) = 0
                    c(n, 6) = 0
                    End If
            Else
                    If unique(n) = b(m, 2) & "\" & b(m, 3) Then
                    c(n, 1) = b(m, 3) & Chr(10) & b(m, 5)
                    c(n, 2) = b(m, 2)
                    c(n, 4) = c(n, 4) + b(m, 4)
                    c(n, 5) = c(n, 5) + b(m, 6)
                    c(n, 6) = c(n, 6) + b(m, 7)
                    End If
                  End If
        Next m, n
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2011, 23:37
Ответы с готовыми решениями:

Что не так в макросе?
На листе "Список по группам" при нажатии кнопки "Сформировать группы" участники с листа "Список"...

Выдаёт ошибку, пишет что слишком мало аргументов в функции Per, что не так, подскажите
#include <iostream> #include <stdio.h> using namespace std; int St (int x) { if (x==0) ...

Подскажите что не так
1 задание: Разработайте новую функцию с именем FIBO, которая подсчитывала сумму n пер-вых чисел...

Подскажите что не так?
Дан массив с элементами 2, 5, 9, 15, 0, 4. С помощью цикла foreach и оператора if выведите на экран...

5
88 / 35 / 14
Регистрация: 03.11.2010
Сообщений: 429
16.09.2011, 09:04 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Сделайте точки останова и проверьте, что там не так. Типа:
Visual Basic
1
2
3
4
5
6
7
8
If unique(n) = b(m, 2) & "\" & b(m, 3) Then
      MSGBOX Trim(Split(b(m, 3), "l=")(0)) 
c(n, 1) = Trim(Split(b(m, 3), "l=")(0)) & Chr(10) & b(m, 5)
c(n, 2) = b(m, 2)
      MSGBOX (Trim(Split(b(m, 3), "l=")(1)) / 1000)
c(n, 4) = c(n, 4) + (Trim(Split(b(m, 3), "l=")(1)) / 1000) * b(m, 4)
c(n, 5) = 0
c(n, 6) = 0
0
0creator0
16.09.2011, 09:51 3
Да я уже, что только не делал, не могу понять, все перебрал уже, 3 день мучаюсь, а результата 0.Не хочет суммировать, когда происходит перебор, те строчки
Trim(Split(b(m, 3), "l=")(1))
где убирался знак равно "l=",
он почему то их добавляет с лист «Суммы», но одинаковые не суммирует, не могу выяснить почему, все попытки пока не к чему не привели.
0creator0
16.09.2011, 10:10 4
Да я уже, что только не делал, не могу понять, все перебрал уже, 3 день мучаюсь, а результата 0.Не хочет суммировать, когда происходит перебор, те строчки
Цитата:Trim(Split(b(m, 3), "l=")(1))
где убирался знак равно "l=",
он почему то их добавляет с лист «Суммы», но одинаковые не суммирует, не могу выяснить почему, все попытки пока не к чему не привели.
88 / 35 / 14
Регистрация: 03.11.2010
Сообщений: 429
16.09.2011, 11:18 5
Visual Basic
1
2
3
For i = 1 To UBound(a)
        If a(i, 1) <> "" Then unique.Add a(i, 2) & "\" & a(i, 3), CStr(a(i, 2) & "\" & a(i, 3))
    Next i
здесь Вы создаёте коллекцию уникальных названий.

ТУ 14-3-190-2004\Труба Г 426х9 l=183
и
ТУ 14-3-190-2004\Труба Г 426х9 l=450
стали уникальными поскольку включили в себя 183 и 450, и суммироваться не будут ))
0
0creator0
16.09.2011, 16:56 6
подскажите пожалуйста, как закончить перебор данных, а то я так понимаю он Теперь он считает сумму, но почему-то записывает ниже, а не в строчку с одинаковыми значениями, для которых он считал. (Лист Суммы)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2011, 16:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Подскажите что не так?
Класс #include &lt;string&gt; #include &lt;fstream&gt; #include &lt;math.h&gt; #include &quot;dot.h&quot; Dot::Dot() {...

Что не так, подскажите?
Здравствуйте, делаю первые робкие шаги в программировании. Хотел сделать код с циклом обратного...

Подскажите что не так?
Нужно заменить цифры в числе на ноль, если цифра равна &quot;a&quot;. А затем вывести получившееся число. ...

подскажите что не так??
&lt;?php $result = mail(&quot;test@mail.ru&quot;,&quot;анкета с сайта&quot;,&quot;сообщение (содержание)&quot;); if ($result)...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.