Доброго времени суток, Сначала проблема: не всегда при подсчете НДС с лева на право и наоборот НДС сходится, поэтому единственное решение разбить поставляемую позицию на две (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
Доброго времени суток, Сначала проблема: не всегда при подсчете НДС с лева на право и наоборот НДС сходится, поэтому единственное решение разбить поставляемую позицию на две (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 рублей.
Понимаю, что решаю эту проблему в лоб, поэтому и возникает такая проблема, буду признателен за наставление на путь истинный.
Ну где же Вы титаны мысли и повелители программных кодов?! Неужели никто не может ткнуть поросенка пятачком в его ошибки и показать правильное решение? НЕ ВЕРЮ!!! Вопрос все еще актуален, буду признателен за помощь.
С уважением, Нифф-Ниф
Ну где же Вы титаны мысли и повелители программных кодов?! Неужели никто не может ткнуть поросенка пятачком в его ошибки и показать правильное решение? НЕ ВЕРЮ!!! Вопрос все еще актуален, буду признателен за помощь.