Ещё раз доброго дня! Мне необходимо суммировать из одной таблицы (столбец I)количество тормозной колодки (голубые ячейки) в таблицу слева (D). НО в таблице из программы (справа) локомотив разбит по секциям, а мне нужно по локомотивам.
Ещё раз доброго дня! Мне необходимо суммировать из одной таблицы (столбец I)количество тормозной колодки (голубые ячейки) в таблицу слева (D). НО в таблице из программы (справа) локомотив разбит по секциям, а мне нужно по локомотивам.Надёнка
Если не поделить на строки 1668/1605А решение формулами будет сложное. Номера в левой таблице сделал в текстовом формате из 4-х знаков. В правой таблице у серий поменял запятые на точки, как в левой таблице.
Если не поделить на строки 1668/1605А решение формулами будет сложное. Номера в левой таблице сделал в текстовом формате из 4-х знаков. В правой таблице у серий поменял запятые на точки, как в левой таблице.
Даже если в левой таблице разделить 1668/1605А на две строки, объединение, как вы показали, сильно усложнит формулы. Объясните, почему у вас появилась эта идея с объединением. Что не устроило в предложенных решениях?
Даже если в левой таблице разделить 1668/1605А на две строки, объединение, как вы показали, сильно усложнит формулы. Объясните, почему у вас появилась эта идея с объединением. Что не устроило в предложенных решениях?AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Левая таблица скачана с программы, в ней прошедшие локомотивы. А правую вручную набивают операторы, в ней один локомотив внесён в две, три строчки, но в ней материалы затребованные на локомотив. В идеале я б хотела подтянуть таблицу операторов к скачанной и программы (левой). Ну и объединить в правой "повторы" тож было бы удобно.
Левая таблица скачана с программы, в ней прошедшие локомотивы. А правую вручную набивают операторы, в ней один локомотив внесён в две, три строчки, но в ней материалы затребованные на локомотив. В идеале я б хотела подтянуть таблицу операторов к скачанной и программы (левой). Ну и объединить в правой "повторы" тож было бы удобно.Надёнка
Если ваша задача только заполнить столбец D, то самый простой вариант написать функцию пользователя. Переделывать работу операторов, думаю не интересно, а обучать заполнять таблицу как вам удобно - бесполезно. Операторы в названии локомотива пишут запятую вместо точки, к секции добавляют буквы. Если вас макросы не пугают, то можно подумать о функции, считающей количество, которая не потребует ничего менять в таблицах.
Если ваша задача только заполнить столбец D, то самый простой вариант написать функцию пользователя. Переделывать работу операторов, думаю не интересно, а обучать заполнять таблицу как вам удобно - бесполезно. Операторы в названии локомотива пишут запятую вместо точки, к секции добавляют буквы. Если вас макросы не пугают, то можно подумать о функции, считающей количество, которая не потребует ничего менять в таблицах.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Вариант с функцией пользователя. В таблицах ничего менять не надо
[vba]
Код
Function Amount_in_fact(Input_Datai As Range, Tabli As Range) As Long Dim a, Input_Data, Tabl, i As Long, j As Long Input_Data = Application.Transpose(Input_Datai) Tabl = Tabli For i = 1 To UBound(Tabl) If Tabl(i, 1) = Input_Data(1, 1) And Replace(Tabl(i, 5), ",", ".") = UCase(Input_Data(2, 1)) Then a = Split(Input_Data(3, 1), "/") For j = 0 To UBound(a) a(j) = Format(a(j), "0000") If InStr(Tabl(i, 6), a(j)) Or InStr(Tabl(i, 7), a(j)) Or InStr(Tabl(i, 8), a(j)) Then Amount_in_fact = Amount_in_fact + Tabl(i, 4) End If Next j End If Next i End Function
[/vba]
Вариант с функцией пользователя. В таблицах ничего менять не надо
[vba]
Код
Function Amount_in_fact(Input_Datai As Range, Tabli As Range) As Long Dim a, Input_Data, Tabl, i As Long, j As Long Input_Data = Application.Transpose(Input_Datai) Tabl = Tabli For i = 1 To UBound(Tabl) If Tabl(i, 1) = Input_Data(1, 1) And Replace(Tabl(i, 5), ",", ".") = UCase(Input_Data(2, 1)) Then a = Split(Input_Data(3, 1), "/") For j = 0 To UBound(a) a(j) = Format(a(j), "0000") If InStr(Tabl(i, 6), a(j)) Or InStr(Tabl(i, 7), a(j)) Or InStr(Tabl(i, 8), a(j)) Then Amount_in_fact = Amount_in_fact + Tabl(i, 4) End If Next j End If Next i End Function