Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Run-time error - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Run-time error
Niff-Nif Дата: Среда, 05.12.2012, 09:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

Доброго времени суток,
Сначала проблема: не всегда при подсчете НДС с лева на право и наоборот НДС сходится, поэтому единственное решение разбить поставляемую позицию на две (100 штук на 99 и 1 шт, или т.п.)
Написал маленькую прогу, которая должна выдавать решения данной проблемы, но программа очень долго считает, оставлял на ночь - толку ноль.
Вот код:
[vba]
Code

Option Explicit
Dim i, j, b, c, col1%
Dim minprice, price1, price2, nds, summa As Currency

Private Sub CommandButton1_Click()
c = 5
price1 = Worksheets("1").Cells(2, 11).Value
price2 = Worksheets("1").Cells(2, 12).Value
For i = 1 To Worksheets("1").Cells(2, 1).Value / 2
     UserForm1.TextBox1.Value = i
     For j = price1 To Worksheets("1").Cells(2, 10).Value Step 0.01
         UserForm1.TextBox2.Value = j
         For b = Worksheets("1").Cells(2, 10).Value To price2 Step 0.01
             UserForm1.TextBox3.Value = b
             summa = Format(CCur(i * j + i * j * 0.18 + (Worksheets("1").Cells(2, 1).Value - i) * b + (Worksheets("1").Cells(2, 10).Value - i) * b * 0.18), "#,##0")
             nds = Format(CCur(i * j * 0.18 + (Worksheets("1").Cells(2, 10).Value - i) * b * 0.18), "#,##0")
                 If summa = Worksheets("1").Cells(2, 2).Value And nds = Worksheets("1").Cells(2, 3).Value Then
                     Worksheets("1").Cells(c, 1).Value = i
                     Worksheets("1").Cells(c, 2).Value = j
                     Worksheets("1").Cells(c, 3).Value = Worksheets("1").Cells(2, 1).Value - i
                     Worksheets("1").Cells(c, 4).Value = b
                     c = c + 1
                 End If
         Next
     Next
Next
Call Unload(UserForm1)
End Sub
[/vba]
По файлу:
Общее кол-во - количество поставляемого товара, которое нужно разбить.
Сумма с НДС - сумма товара с учетом НДС
НДС - сумма НДС поставляемой позиции
Диапазон цены % - ограничиваем пределы отклонения от цены (Сумма с НДС деленное на Общее количество), чтобы не было вариантов типа 99 штук из ста стоит 100 рублей, одна штука стоит 0,01 рублей.

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

С уважением,
Niff-Nif
К сообщению приложен файл: 0186446.xlsm (26.7 Kb)
 
Ответить
СообщениеДоброго времени суток,
Сначала проблема: не всегда при подсчете НДС с лева на право и наоборот НДС сходится, поэтому единственное решение разбить поставляемую позицию на две (100 штук на 99 и 1 шт, или т.п.)
Написал маленькую прогу, которая должна выдавать решения данной проблемы, но программа очень долго считает, оставлял на ночь - толку ноль.
Вот код:
[vba]
Code

Option Explicit
Dim i, j, b, c, col1%
Dim minprice, price1, price2, nds, summa As Currency

Private Sub CommandButton1_Click()
c = 5
price1 = Worksheets("1").Cells(2, 11).Value
price2 = Worksheets("1").Cells(2, 12).Value
For i = 1 To Worksheets("1").Cells(2, 1).Value / 2
     UserForm1.TextBox1.Value = i
     For j = price1 To Worksheets("1").Cells(2, 10).Value Step 0.01
         UserForm1.TextBox2.Value = j
         For b = Worksheets("1").Cells(2, 10).Value To price2 Step 0.01
             UserForm1.TextBox3.Value = b
             summa = Format(CCur(i * j + i * j * 0.18 + (Worksheets("1").Cells(2, 1).Value - i) * b + (Worksheets("1").Cells(2, 10).Value - i) * b * 0.18), "#,##0")
             nds = Format(CCur(i * j * 0.18 + (Worksheets("1").Cells(2, 10).Value - i) * b * 0.18), "#,##0")
                 If summa = Worksheets("1").Cells(2, 2).Value And nds = Worksheets("1").Cells(2, 3).Value Then
                     Worksheets("1").Cells(c, 1).Value = i
                     Worksheets("1").Cells(c, 2).Value = j
                     Worksheets("1").Cells(c, 3).Value = Worksheets("1").Cells(2, 1).Value - i
                     Worksheets("1").Cells(c, 4).Value = b
                     c = c + 1
                 End If
         Next
     Next
Next
Call Unload(UserForm1)
End Sub
[/vba]
По файлу:
Общее кол-во - количество поставляемого товара, которое нужно разбить.
Сумма с НДС - сумма товара с учетом НДС
НДС - сумма НДС поставляемой позиции
Диапазон цены % - ограничиваем пределы отклонения от цены (Сумма с НДС деленное на Общее количество), чтобы не было вариантов типа 99 штук из ста стоит 100 рублей, одна штука стоит 0,01 рублей.

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

С уважением,
Niff-Nif

Автор - Niff-Nif
Дата добавления - 05.12.2012 в 09:53
Niff-Nif Дата: Среда, 12.12.2012, 08:31 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

Ну где же Вы титаны мысли и повелители программных кодов?!
Неужели никто не может ткнуть поросенка пятачком в его ошибки и показать правильное решение?
НЕ ВЕРЮ!!!
Вопрос все еще актуален, буду признателен за помощь.

С уважением,
Нифф-Ниф
 
Ответить
СообщениеНу где же Вы титаны мысли и повелители программных кодов?!
Неужели никто не может ткнуть поросенка пятачком в его ошибки и показать правильное решение?
НЕ ВЕРЮ!!!
Вопрос все еще актуален, буду признателен за помощь.

С уважением,
Нифф-Ниф

Автор - Niff-Nif
Дата добавления - 12.12.2012 в 08:31
Hugo Дата: Среда, 12.12.2012, 10:26 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Я пас - на 2003 файл не идёт.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ пас - на 2003 файл не идёт.

Автор - Hugo
Дата добавления - 12.12.2012 в 10:26
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!