Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Увеличение и уменьшение значения ячейки с определенным шагом при нажатии "+" и "-" на клавиатуре
 
Добрый день!

Хочу настроить в таблице увеличение\уменьшение значения при нажатии клавиши "+"\"-" на клавиатуре для подбора нужного значения с определенным шагом. Данное действие должно быть доступно только для одного листа, а в идеале для определенного диапазона
Лень - двигатель прогресса, а энтузиазм его топливо
UDF в умных таблицах не пересчитываются автоматически, cо строкой Application.Volatile в коде пользовательской функции возникают ошибки
 
Добрый день!

Краткое описание проблемы: Наткнулся на проблему, есть книга Execel с набором макросов и пользовательских функций, функции сложные и используют дополнительные функции. Проблема состояла в том, что пользовательские функции, вбитые в "умную таблицу" "отказывались" пересчитываться автоматически, пересчитывались только через двойной клик и Enter.  Частично проблему решила строка Application.Volatile, однако при открытии новой книги Excel или же копировании и вставке все пользовательские функции сваливаются в ошибку, а при копировании и вставке только значений, вставляется текст ошибки

Вопрос: можно ли обойтись без Application.Volatile? Если у кого-то была подобная проблема, как вы с ней боролись?)
 
Лень - двигатель прогресса, а энтузиазм его топливо
Цикл вычислений по не смежному диапазону ячеек
 
Добрый день!
Возник такой вопрос, необходимо пройтись циклом вычислений по не смежному диапазону, например: по столбцам и в следующем порядке: Y - X - A - B - C - D - E - T - U - X
Как это можно реализовать?  
Лень - двигатель прогресса, а энтузиазм его топливо
Расчёт значения Y зависимого от значения X по ранжированой таблице данных при помощи полиноминальной функции
 
Добрый день!
Задача: есть два зависимых стобца данных X и Y, которые разделены на классы: столбец РАНГ. Необходимо найти значение Y по X в зависимости от РАНГа при помощи полиноминальной функции
Таблица имеет следующий вид (см. Пример):
1. Столбец РАНГ: целые значения как просто с цифрами так и цифры с буквенными индексами: 1; 2; 3а; 3б и тд
2. Столбец X: целые и десятичные числа
3. Столбец Y: числа от 0 до 1, а так же пустые ячейки и знаки "-" (когда значение не верное или является статошибкой)
4. Таблица данных должна остаться в исходном виде
Простенький VBA расчёта по полиноминальной функции я себе написал, но он не идеален:
1. Не работает в диапазонах значений
2. Не работает при наличии пустых ячеек или значений "-" в ячейках
3. Ну и самое главное он (как и я) не знает как расчитывать полиномы по рангам)
Код
Function ПОЛИНОМ_ЗНАЧ(WorkRange As Range, CondRange As Range, CondVAL As Double)
  With Application
    LinEstVAL = .LinEst(WorkRange, .Power(CondRange, Array(1, 2, 3, 4, 5, 6)))
      a_1 = .Index(LinEstVAL, 1) * CondVAL ^ 6
      a_2 = .Index(LinEstVAL, 1, 2) * CondVAL ^ 5
      a_3 = .Index(LinEstVAL, 1, 3) * CondVAL ^ 4
      a_4 = .Index(LinEstVAL, 1, 4) * CondVAL ^ 3
      a_5 = .Index(LinEstVAL, 1, 5) * CondVAL ^ 2
      a_6 = .Index(LinEstVAL, 1, 6) * CondVAL ^ 1
      a_7 = .Index(LinEstVAL, 1, 7)
  End With
ПОЛИНОМ_ЗНАЧ = a_1 + a_2 + a_3 + a_4 + a_5 + a_6 + a_7
End Function
Изменено: lodman_geo - 20.05.2019 16:02:09
Лень - двигатель прогресса, а энтузиазм его топливо
Перенос таблиц c данными из EXCEL в шаблон WORD
 
Добрый день!
Делаю шаблон автоматической обработки больших массивов данных и столкнулся с проблемой: "Как в автоматическом режиме вставить таблицы с данными в шаблон отчета WORD"
Что нужно перенести:
1. Сводную таблицу (1 - 3 листа А3 альбомной ориентации)
2. Таблица с набором данных (от 1 до n страниц А3 альбомной ориентации, разбита по категориям - от 1 до k)
3. Таблицы статистики,  которые формируются на основе таблицы 2 по категориям (от 1 до k таблицы с графиками на 2 листа А4)

Куда нужно перенести:
Шаблон WORD с заранее подготовленными маркерными метками или закладками

Сложность: Значений в таблице 2 может быть до 10-ка тысяч

P.S. Я понимаю, что подобного рода задачка так просто не решается, мне бы хотя бы примерное решение либо примерное направление в котором нужно двигаться
Изменено: lodman_geo - 20.05.2019 13:48:50
Лень - двигатель прогресса, а энтузиазм его топливо
Перевод таблицы с двумя переменными (кросс-таблицы) в двумерный массив VBA, для дальнейшего экспорта функции поиска значений по данной таблицы
 
Добрый день!

Задача: Перенести значение из исходной таблицы, по которой функцией VBA выполняется интерполяция по двум переменным, в двухмерный массив
Вопрос: Как это правильнее сделать и придется ли при этом менять код?
Поиск значений происходит при помощи следующего макроса (автор: Ігор Гончаренко ) код
Код
Function Fxy#(Tablo As Range, r#, c#)
  Dim ri&, ci&
  ri = 1 + FindIndex(Range(Tablo.Cells(2, 1), Tablo.Cells(Tablo.Rows.Count, 1)), r)
  ci = 1 + FindIndex(Range(Tablo.Cells(1, 2), Tablo.Cells(1, Tablo.Columns.Count)), c)
  Fxy = Fx(c, Tablo.Cells(1, ci), Tablo.Cells(1, ci + 1), _
  Fx(r, Tablo.Cells(ri, 1), Tablo.Cells(ri + 1, 1), Tablo.Cells(ri, ci), Tablo.Cells(ri + 1, ci)), _
  Fx(r, Tablo.Cells(ri, 1), Tablo.Cells(ri + 1, 1), Tablo.Cells(ri, ci + 1), Tablo.Cells(ri + 1, ci + 1)))
End Function
 
 
Function Fx(x#, x1#, x2#, y1#, y2#)
  Fx = y1 + (x - x1) * (y2 - y1) / (x2 - x1)
End Function
 
 
Private Function FindIndex&(rg As Range, V)
  Dim IncRg As Boolean, i&
  If rg.Cells(1) < rg.Cells(rg.Cells.Count) Then
    If V < rg.Cells(1) Then FindIndex = 1: Exit Function
    If V > rg.Cells(rg.Cells.Count) Then FindIndex = rg.Cells.Count - 1: Exit Function
    FindIndex = WorksheetFunction.Match(V, rg)
  Else
    If V > rg.Cells(1) Then FindIndex = 1: Exit Function
    If V < rg.Cells(rg.Cells.Count) Then FindIndex = rg.Cells.Count - 1: Exit Function
    FindIndex = WorksheetFunction.Match(V, rg, -1)
  End If End Function
Изменено: lodman_geo - 13.05.2019 17:30:01
Лень - двигатель прогресса, а энтузиазм его топливо
Поиск значения в кросс-таблице с заданным шагом в полях
 
Добрый день!

Пытаюсь написать пользовательскую функцию, но не могу понять где моя ошибка
Функция должна рассчитывать табличное значение на основе двух переменных
Код
Function FI(IL, e)

Dim TABfi As Range
Dim X As Range
Dim Y As Range

Dim i_min As Integer
Dim i_max As Integer
Dim j_min As Integer
Dim j_max As Integer

Dim x11 As Integer
Dim x12 As Integer
Dim x21 As Integer
Dim x22 As Integer

Dim a As Integer
Dim a1 As Integer
Dim a2 As Integer

Dim e_min As Integer
Dim e_max As Integer
Dim IL_min As Integer
Dim IL_max As Integer

Set TABfi = Sheets("ghost").Range("D78:R81")
Set X = Sheets("ghost").Range("D77:R77")
Set Y = Sheets("ghost").Range("C78:C81")

e_min = Application.WorksheetFunction.RoundDown(e / 0.05, 1) * 0.05
e_max = Application.WorksheetFunction.RoundUp(e / 0.05, 1) * 0.05
IL_min = Application.WorksheetFunction.RoundDown(IL / 0.25, 1) * 0.25
IL_max = Application.WorksheetFunction.RoundUp(IL / 0.25, 1) * 0.25

i_min = Application.WorksheetFunction.Match(IL_min, Y, 0)
i_max = Application.WorksheetFunction.Match(IL_max, Y, 0)
j_min = Application.WorksheetFunction.Match(e_min, X, 0)
j_max = Application.WorksheetFunction.Match(e_max, X, 0)

x11 = Application.WorksheetFunction.Index(TABfi, i_min, j_min)
x12 = Application.WorksheetFunction.Index(TABfi, i_min, j_max)
x21 = Application.WorksheetFunction.Index(TABfi, i_max, j_min)
x22 = Application.WorksheetFunction.Index(TABfi, i_max, j_max)

a1 = x11 + ((x11 - x12) / (e_min - e_max)) * (e - e_min)
a2 = x21 + ((x21 - x22) / (e_min - e_max)) * (e - e_min)
FI = a1 + ((a1 - a2) / (IL_min - IL_max)) * (IL - IL_min)

End Function
Учусь писать макросы по гуглу, могу допустить какую-то фундаментальную ошибку) Не судите строго
Лень - двигатель прогресса, а энтузиазм его топливо
VBA Как округлить значение в меньшую сторону с определенной точностью с помощью кода
 
Добрый день!
Ищу аналог функции только в виде кода для макроса:
=ОКРВНИЗ.ТОЧН(L6;0.25)
К сожалению нужен исключительно код
Лень - двигатель прогресса, а энтузиазм его топливо
Cоздание пользовательской функции из формулы Exel или R1C1
 
Есть таблица с уже очень тяжелыми формулами ссылающиеся на другие листы и умные таблицы по свей книге, можно ли ее перевести в пользовательскую функцию, просто используются фунции в формуле, которые я не знаю VBA, например:

=ЕСЛИОШИБКА(ЕСЛИ((ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[0_0];Физ.свойства[0];D6);0))=2;((ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВНИЗ.ТОЧН(P6;0.05);ghost!D71:R71)))+((P6-ОКРВНИЗ.ТОЧН(P6;0.05))*(((ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВНИЗ.ТОЧН(P6;0.05);ghost!D71:R71)))-(ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВВЕРХ.ТОЧН(P6;0.05);ghost!D71:R71))))/(-0.05))))+ЕСЛИОШИБКА(((L6-(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25))))*((((ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВНИЗ.ТОЧН(P6;0.05);ghost!D71:R71)))+((P6-ОКРВНИЗ.ТОЧН(P6;0.05))*(((ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВНИЗ.ТОЧН(P6;0.05);ghost!D71:R71)))-(ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВВЕРХ.ТОЧН(P6;0.05);ghost!D71:R71))))/(-0.05))))-((ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВВЕРХ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВВЕРХ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВНИЗ.ТОЧН(P6;0.05);ghost!D71:R71)))+((P6-ОКРВНИЗ.ТОЧН(P6;0.05))*(((ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВВЕРХ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВВЕРХ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВНИЗ.ТОЧН(P6;0.05);ghost!D71:R71)))-(ИНДЕКС(ghost!D84:R87;ПОИСКПОЗ(ЕСЛИ(ОКРВВЕРХ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВВЕРХ.ТОЧН(L6;0.25));ghost!C72:C75);ПОИСКПОЗ(ОКРВВЕРХ.ТОЧН(P6;0.05);ghost!D71:R71))))/(-0.05)))))/(ЕСЛИ(ОКРВНИЗ.ТОЧН(L6;0.25)<0.25;0.25;ОКРВНИЗ.ТОЧН(L6;0.25))-ОКРВВЕРХ.ТОЧН(L6;0.25))));0);ЕСЛИ((ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[0_0];Физ.свойства[0];D6);0))=1;ЕСЛИ(K6<=0.07;-1250*P6^4+4500*P6^3-5993.8*P6^2+3468.8*P6-717.01;ЕСЛИ(K6<=0.12;2500*P6^4-8500*P6^3+10713*P6^2-5958.8*P6+1256.2;ЕСЛИ(K6<=0.17;-2083.3*P6^4+6833.3*P6^3-8322.9*P6^2+4432.9*P6-844.68;ЕСЛИ(K6<=0.4;1666.7*P6^4-5666.7*P6^3+7208.3*P6^2-4105.8*P6+913.97))));ЕСЛИ(И(K6<=0.07;L6<0.25);-333.33*P6^3+650*P6^2-439.17*P6+117.38;ЕСЛИ(И(K6<=0.07;L6<=0.75);833.33*P6^4-2333.3*P6^3+2429.2*P6^2-1134.2*P6+215.92;ЕСЛИ(И(K6<=0.07;L6>0.75);(833.33*P6^4-2333.3*P6^3+2429.2*P6^2-1134.2*P6+215.92)/(1.7*L6);ЕСЛИ(И(K6<=0.17;L6<0.25);-10833*P6^5+38125*P6^4-52896*P6^3+36222*P6^2-12318*P6+1711.7;ЕСЛИ(И(K6<=0.17;L6<0.5);5000*P6^5-17500*P6^4+24208.33*P6^3-16512.5*P6^2+5489.45*P6-668.11;ЕСЛИ(И(K6<=0.17;L6<=0.75);-1250*P6^4+4166.7*P6^3-5093.8*P6^2+2669.6*P6-479.26;ЕСЛИ(И(K6<=0.17;L6>0.75);(-1250*P6^4+4166.7*P6^3-5093.8*P6^2+2669.6*P6-479.26)/(1.7*L6);ЕСЛИ(И(K6<=0.4;L6<0.25);16667*P6^5-68333*P6^4+110583*P6^3-88092*P6^2+34373*P6-5160.8;ЕСЛИ(И(K6<=0.4;L6<0.5);-416.67*P6^4+1500*P6^3-1964.6*P6^2+1046.3*P6-130.59;ЕСЛИ(И(K6<=0.4;L6<=0.75);-2500*P6^4+8500*P6^3-10713*P6^2+5888.8*P6-1144.7;ЕСЛИ(И(K6<=0.4;L6>0.75);(-2500*P6^4+8500*P6^3-10713*P6^2+5888.8*P6-1144.7)/(1.7*L6);ЕСЛИ(K6="-";ЕСЛИ((ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[5];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[6];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[7];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[8];Физ.свойства[0];D6);"0"))>50;-10*P6+6.5;ЕСЛИ((ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[5];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[6];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[7];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[8];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[9];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[10];Физ.свойства[0];D6);"0"))>50;-10*P6+7.5;ЕСЛИ((ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[5];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[6];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[7];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[8];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[9];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[10];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[11];Физ.свойства[0];D6);"0"))>=75;-20*P6+15;ЕСЛИ((ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[5];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[6];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[7];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[8];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[9];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[10];Физ.свойства[0];D6);"0")+ЕСЛИОШИБКА(СРЗНАЧЕСЛИМН(Физ.свойства[11];Физ.свойства[0];D6);"0"))<75;-20*P6+17;))))))))))))))))));"-")
Лень - двигатель прогресса, а энтузиазм его топливо
Разделить одну таблицу на несколько для дальнейшей вставки в шаблон WORD
 
У меня есть таблица, размер которой может меняться, и нужно разделить ее на несколько равных частей как в примере
Как вариант: макрос для вставки строк через определенный интервал и вставка вверху номеров столбцов для каждой части  
Лень - двигатель прогресса, а энтузиазм его топливо
VBA Выделение ошибочных значений с диалоговым окном при наполнении таблицы данными
 
При создании шаблона для заполнения таблицы данными на основе данных, которые уже внесены в таблицу столкнулся с рядом проблем. В таблице содержатся как пустые ячейки так и формулы:
1) для создаваемого массива данных и расчётных характеристик необходимо найти ячейки с минусов ими данными (и для формул и для значений) с диалоговым окном, в котором пользователь сможет выбирать варианты: выделить ячейки (в моем случае "Да"), очистить ошибочные минусовые значения не задевая при этом формулы (в моем случае "нет") и прервать выполнение макроса, который наполняет таблицу (data_calc)
Однако мой макрос умеет только выделять минусовые значения, либо очищать ячейку и на каждую ячейку выскакивает отдельное диалоговое окно (может доходить до 10000)
Можно ли сделать, что бы при выделение ошибочных значений можно было провести подтвердив только один раз нажатием "ДА"; очистить ошибочные значения нажатием кнопки "НЕТ" и прервать выполнение макроса data_calc при нажатии кнопки "Прервать" (подтверждать 1000 окон не вариант)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("Физ.свойства[[0]:[21]],Физ.свойства[[23]:[27]]")) Is Nothing Then
        If Target < 0 Then
            If MsgBox("Выделить ошибочное значение?", 4 + 32, "Обнаружено ошибочное значение") = vbNo Then
                Target = Target * 0
                Range("Физ.свойства[[5]:[27]]").Replace What:="0", Replacement:="", LookAt:=xlWhole
                With Target.Cells.Interior
                .ColorIndex = 6
                .Pattern = xlSolid
                End With
            Else
                With Target.Cells.Interior
                .ColorIndex = 3
                .Pattern = xlSolid
                End With

            End If
        End If
    End If
End Sub
2) Выделение по классам данных (столбец Физ.свойства[0]) происходит через кнопку "Выделить по ИГЕ", как можно перевести этот макрос на OnChage через Private Sub Worksheet_Change(ByVal Target As Range)
Код
Sub ВыделитьДубликатыРазнымиЦветами()
    
    Range("Физ.свойства[0]").Select
    
    On Error Resume Next
    ' массив цветов, используемых для заливки ячеек-дубликатов
    Colors = Array(12900829, 15849925, 14408946, 14610923, 15986394, 14281213, 14277081, _
                   9944516, 14994616, 12040422, 12379352, 15921906, 14336204, 15261367, 14281213)
 
    Dim coll As New Collection, dupes As New Collection, _
        cols As New Collection, ra As Range, cell As Range, n&
    Err.Clear: Set ra = Intersect(Selection, ActiveSheet.UsedRange)
    If Err Then Exit Sub
 
    ra.Interior.ColorIndex = xlColorIndexNone: Application.ScreenUpdating = False
    For Each cell In ra.Cells ' запонимаем значение дубликатов в коллекции dupes
        Err.Clear: If Len(Trim(cell)) Then coll.Add CStr(cell.Value), CStr(cell.Value)
        If Err Then dupes.Add CStr(cell.Value), CStr(cell.Value)
    Next cell
    For i& = 1 To dupes.Count ' заполняем коллекцию cols цветами для разных дубликатов
        n = n Mod (UBound(Colors) + 1): cols.Add Colors(n), dupes(i): n = n + 1
    Next
    For Each cell In ra.Cells ' окрашиваем ячейки, если для её значения назначен цвет
        cell.EntireRow.Interior.Color = cols(CStr(cell.Value))
    Next cell
    Application.ScreenUpdating = True
End Sub


Лень - двигатель прогресса, а энтузиазм его топливо
Страницы: 1
Наверх