Добрый день. В столбце А имеются некоторые данные, в столбце B - количество повторов, на другом листе ( в примере - столбец D) - как должен отображаться результат. Ещё уточнение - если столбец В содержит нулевые значения, то в результирующем столбце ( D ) данные из столбца А отображаться не должны. Возможно ли решить задачу при помощи формул, если да, то очень жду помощи.
Добрый день. В столбце А имеются некоторые данные, в столбце B - количество повторов, на другом листе ( в примере - столбец D) - как должен отображаться результат. Ещё уточнение - если столбец В содержит нулевые значения, то в результирующем столбце ( D ) данные из столбца А отображаться не должны. Возможно ли решить задачу при помощи формул, если да, то очень жду помощи.Edward_M
Sub Zapol() iRow = Range("B1").SpecialCells(xlLastCell).Row For Each cell In Range(Cells(1, 2), Cells(iRow, 2)) q = cell.Value Z = cell.Offset(0, -1).Value iR = Cells(Rows.Count, 4).End(xlUp).Row + 1 Range(Cells(iR, 4), Cells(iR + q - 1, 4)).Select Selection.Value = Z Next End Sub
[/vba]
Вариант с макросом)) [vba]
Код
Sub Zapol() iRow = Range("B1").SpecialCells(xlLastCell).Row For Each cell In Range(Cells(1, 2), Cells(iRow, 2)) q = cell.Value Z = cell.Offset(0, -1).Value iR = Cells(Rows.Count, 4).End(xlUp).Row + 1 Range(Cells(iR, 4), Cells(iR + q - 1, 4)).Select Selection.Value = Z Next End Sub
Nic70y, Спасибо, но что-то не срабатывает. Если заполняю в столбце B значения 3 2 1, то в столбце F получаю значения только первых 2-х строк столбца А, если ставлю 0 в ячейку В1, а в B2 2 и в B3 -2, то результат получаю в F1 - 123 ( оно и понятно, там ведь стоит формула =A1), в F2 и F3 - 234, остальные ячейки столбца возвращают ошибку, хотя в F4 и F5 должны быть значения "2345".
Nic70y, Спасибо, но что-то не срабатывает. Если заполняю в столбце B значения 3 2 1, то в столбце F получаю значения только первых 2-х строк столбца А, если ставлю 0 в ячейку В1, а в B2 2 и в B3 -2, то результат получаю в F1 - 123 ( оно и понятно, там ведь стоит формула =A1), в F2 и F3 - 234, остальные ячейки столбца возвращают ошибку, хотя в F4 и F5 должны быть значения "2345".Edward_M
DJ_Marker_MC, Вариант с макросом мне нравится ( жаль, что на изучение VBA нет времени). Первый раз процедура выполнилась изумительно, но как только начал экспериментировать с цифрами второго столбца ( в частности поставил ноль в ячейку B2) по нажатии на кнопку "Заполнить" стал получать неверные результаты. Может быть что-то делаю не так ?
DJ_Marker_MC, Вариант с макросом мне нравится ( жаль, что на изучение VBA нет времени). Первый раз процедура выполнилась изумительно, но как только начал экспериментировать с цифрами второго столбца ( в частности поставил ноль в ячейку B2) по нажатии на кнопку "Заполнить" стал получать неверные результаты. Может быть что-то делаю не так ?Edward_M
Nic70y, спасибо. Ваше решение работает только с диапазоном A1:B3, у меня этот диапазон приведён для примера, а как его можно расширить ( скажем до A1:B50) ?
Nic70y, спасибо. Ваше решение работает только с диапазоном A1:B3, у меня этот диапазон приведён для примера, а как его можно расширить ( скажем до A1:B50) ?Edward_M
DJ_Marker_MC, у Nic70y есть нюанс - формула =ЕСЛИ(СУММЕСЛИ(A$1:A$3;F3;B$1:B$3)>СЧЁТЕСЛИ(F$1:F3;F3);F3;ИНДЕКС(A$1:A$3;ПОИСКПОЗ(F3;A$1:A$3;0)+ПОИСКПОЗ(1=1;((ИНДЕКС(B$1:B$3;ПОИСКПОЗ(F3;A$1:A$3;0)+1):ИНДЕКС(B$1:B$4;4))>0);0))) заканчивается не B$1:B$3, а B$1:B$4 и при изменении диапазона на B$1:B$50 ( или на B$1:B$51) не даёт нужного результата ( даже при нажатии Ctrl+Shift+Enter )
DJ_Marker_MC, у Nic70y есть нюанс - формула =ЕСЛИ(СУММЕСЛИ(A$1:A$3;F3;B$1:B$3)>СЧЁТЕСЛИ(F$1:F3;F3);F3;ИНДЕКС(A$1:A$3;ПОИСКПОЗ(F3;A$1:A$3;0)+ПОИСКПОЗ(1=1;((ИНДЕКС(B$1:B$3;ПОИСКПОЗ(F3;A$1:A$3;0)+1):ИНДЕКС(B$1:B$4;4))>0);0))) заканчивается не B$1:B$3, а B$1:B$4 и при изменении диапазона на B$1:B$50 ( или на B$1:B$51) не даёт нужного результата ( даже при нажатии Ctrl+Shift+Enter )Edward_M
Nic70y, В первой части формулы диапазон B$1:B$3 тоже расширяем до B$700 ? =ЕСЛИ(СУММЕСЛИ(A$1:A$700;F1;B$1:B$700... У меня не срабатывает формула, если ввожу данные в ячейки A4 и B4 (
точнее не срабатывает в части, касающейся исходных данных, расположенных ниже третьей строки
Nic70y, В первой части формулы диапазон B$1:B$3 тоже расширяем до B$700 ? =ЕСЛИ(СУММЕСЛИ(A$1:A$700;F1;B$1:B$700... У меня не срабатывает формула, если ввожу данные в ячейки A4 и B4 (
точнее не срабатывает в части, касающейся исходных данных, расположенных ниже третьей строкиEdward_M
Сообщение отредактировал Edward_M - Понедельник, 08.12.2014, 18:32
Pelena, решений действительно много, маленькое "но" - список фруктов размещён в том же столбце, что и исходные данные, поэтому нужно поломать голову при необходимости увеличения количества строк с исходными данными, причём с начальными знаниями в формулах ( и с нулевыми в VBA) сделать это не просто... Но информация в топике всё-равно очень полезная
Pelena, решений действительно много, маленькое "но" - список фруктов размещён в том же столбце, что и исходные данные, поэтому нужно поломать голову при необходимости увеличения количества строк с исходными данными, причём с начальными знаниями в формулах ( и с нулевыми в VBA) сделать это не просто... Но информация в топике всё-равно очень полезнаяEdward_M
Уважаемые формучане, в принципе решение моей задачи найдено (вполне устраивает ответ JayBhagavan ), всем спасибо. Если есть желание, то можно пообсуждать другие методы, но в целом вопрос решён.
Уважаемые формучане, в принципе решение моей задачи найдено (вполне устраивает ответ JayBhagavan ), всем спасибо. Если есть желание, то можно пообсуждать другие методы, но в целом вопрос решён.Edward_M