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

Страницы: 1 2 След.
Триггер по условию с последующим поиском значений
 
Ігор Гончаренко, прикрепил новый файл где описал каждое действие в случае W/L рядом(или L/W).
В первой ситуации в прикрепленном файле, макрос посчитал правильно. Но во второй и третьей ситуации - не правильно. Так же есть четвертая ситуация чуть чуть ниже, не понятно откуда берется "ДА" в 49 строке.

Еще раз спасибо!
Изменено: pain2430 - 19.09.2023 23:42:49
Триггер по условию с последующим поиском значений
 
Ігор Гончаренко, да, совпало, спасибо Вам огромное за это. Но при другом наборе данных, в такой же ситуации макрос почему то пропускает триггер, если Вам не трудно посмотрите пожалуйста файл который прикрепил выше... Единственная ситуация которую он не распознает - там где возле триггера L стоит рядом W.
Триггер по условию с последующим поиском значений
 
Ігор Гончаренко, добрый день. Спасибо огромное Вам за быстрый отклик и макрос! Он работает почти идеально, кроме некоторых моментов, когда W/L рядом, не хочет начинать поиск. Прикрепил файл с новым набором данных, где указана ошибка.
Триггер по условию с последующим поиском значений
 
Здравствуйте.  Прошу помощи в написании формулы, которая определяет триггер, и после  этого триггера начинает искать значение в колонке.

Колонки B и C -  в них находятся значения в виде "W" и "L". Триггером считается если  между двумя "L" по ДИАГОНАЛИ, стоит только 1 "W" или между ними пустые  ячейки.
Колонка A - в ней значения которые нужно искать после триггера("O" и "U").
1)  Если триггер случился в колонке "B", то ищем значение "U" в колонке  "A", если не нашли то в колонке D ставим "НЕТ", если нашли то ставим  "ДА", поиск прекращается если наступает новый триггер.
2) Если  триггер случился в колонке "С", то ищем значение "O" в колонке "A", если  не нашли то в колонке D ставим "НЕТ", если нашли то ставим "ДА", поиск  прекращается если наступает новый триггер.
3) Отдельное правило для  единственного случая, когда возле триггера "L" рядом стоит "W", тогда  должен сработать дополнительный триггер, мы должны искать O или U,  только после первого случившегося O или U.

В прикрепленном файле, максимально постарался прокомментировать каждое действие с подробностями.

Спасибо!

Кросс
Поиск нужного значения в диапазоне
 
БМВ, да кросс, но на этом форуме намного упростил условие надеясь что здесь кто-то поможет решить задачу
Изменено: pain2430 - 27.02.2020 22:20:47
Поиск нужного значения в диапазоне
 
МатросНаЗебре,здравствуйте, спасибо за формулу, но это не совсем то что нужно.
Ваша формула проверяет первое значение после "W", а дальше ей не важно...

Посмотрите на диапазон строк 30-32, так же на диапазон 38-40. Формула должна искать Y пока не найдет его в этом диапазоне. Ну то есть если случилось "W", и первое значение после него "A", там должно стоять "N", переходим к следующего значению, там тоже стоит "A", опять ставим "N" и т.д...
Поиск нужного значения в диапазоне
 
Здравствуйте, помогите пожалуйста написать формулу.
Данные в столбце "H" - вводятся в ручную, значения A и B.

ЕСЛИ  в колонке J случилось "W", ищем начиная со следующей строки значение  "B" в колонке H, если находим, ставим "Y", если не находим, ставим "N".
ЕCЛИ находим значение "Y", прекращаем поиск, и переходим к следующему диапазону.

Началом диапазона считается следующая строка после W, колонке J
Концом диапазона считается строка в которой находится W или L, в колонке J.

Спасибо!
Сортировка привязанного по числу текста
 
Добрый вечер, помогите пожалуйста в сортировке данных:

В колонке "A" числа привязанные к именам которые в колонке "B". Якобы персональные ID этих имен.

В колонке "D", эти ID имен в рандомном порядке.
Нужно в порядке который в колонке "D", выстроить эти имена из колонки "A".
Как это сделать?
Спасибо!
Найти каждое второе и третье значение в диапазонах
 
Добрый день! Прошу помощи вот в таком вот задании.

В  колонке "H" есть значения A и B в рандомном порядке. На основе этих  значений, с помощью формулы подсчитываются значения в колонке J.
Каждый новый диапазон начинается в следующей строке после значения "W" или "L" и заканчивается на "W" или "L".
И вот собственно условие для колонки "F" которая должна подсчитываться:
Если  в диапазоне случилось одно "A", то в следующей строке столбца "F"  записываем "A" до конца диапазона если условие выполняется.
Если в  диапазоне случилось два "B", то в следующей строке столбца "F"  записываем "B" до конца диапазона если условие выполняется.
Если в диапазоне случилось два "B" и одно "A", то в следующей строке столбца "F" записываем "AB"

На примере файла:
В J23 начался новый диапазон. В H23 случилось одно "A", в F24 записываем "A".
В H24 случилось одно "B", в F25 записываем "A".
В H25 стоит B. То есть в диапазоне от J23 до J26 случилось два "B" и одно "A". Значит записываем в F26 "AB".

В J37 начался новый диапазон. В H37 случилось одно "B", пропускаем.
В H38 случилось одно "A", в F39 записываем "A".
В H39 стоит B. То есть в диапазоне от J37 до J40 случилось два "B" и одно "A". Значит записываем в F40 "AB".

Спасибо!

Кросс
Найти каждое четвертое значение в диапазоне
 
Здравствуйте! Прошу помощи вот в таком вот задании:
В колонку "H" вводятся результаты вручную, значения "A" или "B".
Колонки "J" и "K" это результаты вычислений колонки "H". Колонка "J" подписана как "A", колонка "K" подписана как "B".
Если это поможет, то колонки "J" и "K" вычисляются следующим образом:
Для колонки "J" условие:
Если в колонке "H" случается 4 "A" (не важно в каком порядке), тогда в колонке "J" значение "W".
Если в колонке "H" случается 5 "B" (не важно в каком порядке), тогда в колонке "J", значение "L".
После найденного "W", или "L", подсчет начинается заново.
Для колонки "K", противоположное условие:
Если в колонке "H" случается 4 "B" (не важно в каком порядке), тогда в колонке "K" значение "W".
Если в колонке "H" случается 5 "A" (не важно в каком порядке), тогда в колонке "K", значение "L".
После найденного "W", или "L", подсчет начинается заново.
Но решение для колонок "J" и "K" у меня есть. Нужно решение для колонки "E".

И вот собственно что нужно сделать:
Если в колонке "J" случилось "L", ищем 4-ое "B" в колонке "K"(в диапазоне от последнего "W" или "L", до следующего "W" или "L").
Мы  думаем что если случилось три "B", то после третьего "B" сразу же тоже  будет четвертое "B" в колонке "H" (как бы прогнозируем).
И если сразу же после третьего "B", в колонке "H" случается четвертое "B", тогда записываем в колонку "E" значение "BB".
Но если сразу же после третьего "B", в колонке "H" случается "A", тогда записываем в колонке "E" значение "A".
Если  еще раз случится в колонке "H" случится "A", опять записываем в колонке  "E" значение "A", и так пока не найдем четвертое "B".

Аналогично проделываем это если в колонке "K" случилось "L". По диагонали в колонке "J", ищем 4-ое "A".

В прикрепленном файле есть пример.

В J14 случилось "L". В диапазоне от К14 до К19 ищем 4-ое "B" в колонке "H".
H14 - первое "B", H15 - второе "B", H18 - третье "B" и после третьего "B" сразу же идет четвертое, значит в E19 записываем "BB".
Далее в K27 случилось "L", ищем в диапазоне от J23 до J30, четвертое "A" в колонке "H".
H23  - первое "A", H26 - второе "A", H27 - третье "A", мы думаем что после  третьего "A" должно быть сразу же четвертое "A", но нет, в H28 стоит  "B", значит записываем в E28 значение "B", после него в H29 опять "B",  значит опять записываем "B" в E29. И наконец в H30 случилось 4-ое "A",  записываем в E30 значение "AA".

Извините за большое кол-во текста, постарался максимально доступно объяснить!
Заранее спасибо за помощь!

Кросс
Изменено: pain2430 - 05.06.2019 18:33:33
Сравнение двух столбцов и вывод результата в третий столбец.
 
Здравствуйте, прошу помощи вот в таком задании:
В колонке G и H, внесены значения "A" и "B". В колонке J - результат сравнения.

Условие такое:
Если G10 равно H11, то J11 = "Равно".
Если G10 не равно H11, то J11 = "Не равно".
Если G10 =A или B, и H11 = пустота, то J11 = пустота
Если G10 = пустота, и H11 = пустота, то J11 = пустота

Условие простое, НО, если в колонке J случаются два "не равно" подряд, то мы пропускаем следующие ячейки, до того как в колонке G появится "A".
Чтобы понять эту ситуацию, посмотрите пример, диапазон J22-J25.

Там случилось вот что:
G22 не равно H23. Записываем в J23 "Не равно"
G23 не равно H24. Записываем в J24 "Не равно"
G24 равно H25, но было два случая "Не равно", по этому пропускаем, и ищем в G следующее "A".

Спасибо!
Сравнить результаты одного столбца, с двумя другими, и вывести результат в четвертый
 
artyrH, спасибо за Ваш труд, но это не совсем то что нужно. После первого найденого R или R-R, мы переходим к следующему диапазону(то есть ищем следующее G, в колонке "h". В примере ошибку выделил красным...
Сравнить результаты одного столбца, с двумя другими, и вывести результат в четвертый
 
Здравствуйте. Прошу помощи решить вот такое вот задание....
Основной столбец "H", в котором в рандомном порядке записаны значения "G" и "R".
Есть так же столбцы "D" и "F" в которых записаны такие же значенения "G" и "R" в рандомном порядке.
Столбец K - результат следующих вычислений:
Когда в столбце H, появляется значение "G", формула должна искать значение "R" в столбцах D и F начиная со следующей строки.
Когда в столбце H, появляется значение "R", пропускаем диапазон, ищем следующее "G".
Если по пути к "R" встречается "G" (в одной из колонок), тогда в колонке результата "K" должно быть значение "B".
Если по пути к "R", в одной строке (В обеих колонках) будут "G" и "G", тогда в колонке "K" должно быть значение "B"
Если по пути к "R" , в одной строке (В обеих колонках)  будут "R" и "G" одновременно (или "G" и "R"), тогда в колонке "K" пустота.
Если находим "R" (в одной из колонок), тогда в колонке "K" должно быть значение "A".
Если находим "R" и "R" (в обеих колонках, тогда в колонке "K" должно быть значение "A".

Если найдено "R", переходим к следующему значению в колонке "H".

Спасибо!
Изменено: pain2430 - 24.05.2019 15:42:39
Calculate переменной строки другого листа
 
Ігор Гончаренко, не понял сначала что имел ввиду БМВ, сорри.
Оказывается да, если в пустом файле запустить этот макрос то все работает....
К сожалению согласно пункта 2.4 правил форума, не могу прикрепить файл :(
Пытался найти причину, почему выдает ошибку, перелопатил весь файл, так и не понял.
Самое интересное что:
Код
Лист3.Rows("1:" & i).Calculate
Не работает
а если так:
Код
Лист3.Rows(i).Calculate
то работает без ошибки.
Умудрился решить задачу вторым вариантом.
Спасибо Ігор Гончаренко, БМВ, за отклик. Тему можно удалить так как она не имеет никакого смыслового характера...
Calculate переменной строки другого листа
 
БМВ, в том то и дело, что если заменить это

Код
Лист3.Rows("1:" & i).Calculate
Лист4.Rows("1:" & i).Calculate
Лист5.Rows("1:" & i).Calculate
Лист6.Rows("1:" & i).Calculate
на это
Код
Лист3.Calculate
Лист4.Calculate
Лист5.Calculate
Лист6.Calculate
то всё будет работать....но в моем случае, очень медленно, так как огромное кол-во данных.

Вот и прошу помощи....как пересчитать формулы другого листа, в строках от первой до переменной....
Calculate переменной строки другого листа
 
Здравствуйте. Прошу помощи. Есть код который считает очень большой объем информации. Для экономии времени решил воспользоваться отключением пересчета формул на других листах. Но столкнулся с проблемой такого характера:
Нужно чтобы пересчет формул включался на определенных листах, в строках, от первой строки до строки заданной переменной "i".
Пробовал на подобии:
Код
Лист3.Rows("1:" & i).Calculate
Пробовал так же Range, и еще много вариантов которые находил в интернете. Но чтобы не пробовал, постоянно выдает ошибку "Method Calculate of Object Range Failed".

Вот собственно сам код:
Код
Sub work3()
Application.EnableEvents = False
Dim lr As Long
Dim i As Long
lr = Cells(Rows.Count, 8).End(xlUp).Row

For i = 9 To lr
    If Range("H" & i).Value = "U" Then Range("H" & i).Value = "O" Else Range("H" & i).Value = "U" 
    Application.Calculation = xlCalculationManual
EnableCalculation = True
Лист3.Rows("1:" & i).Calculate
Лист4.Rows("1:" & i).Calculate
Лист5.Rows("1:" & i).Calculate
Лист6.Rows("1:" & i).Calculate
Rows(i).Calculate

    Range("AH" & i).Value = Range("AG" & i).Value
    Range("CD" & i).Value = Range("CC" & i).Value
    Range("DZ" & i).Value = Range("DY" & i).Value
    Range("FV" & i).Value = Range("FU" & i).Value

    If Range("H" & i).Value = "U" Then Range("H" & i).Value = "O" Else Range("H" & i).Value = "U" 

Next i
Application.EnableEvents = True
EnableCalculation = False
Application.Calculation = xlCalculationAutomatic

End Sub

Cпасибо!
При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
Всё, сам понял. Просто там где
Код
For i = 9 To lr
Нужно было сделать вот так:
Код
For i = Cells(Rows.Count,8).End(xlUp).Row To lr
Огромное спасибо Tefra и Юрий М за проявленный интерес к моей теме и помощь!
При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
Цитата
Юрий М написал:
По вопросу: что понимать под активной ячейкой?
Значения начинаются в H9, и после каждого ввода значения в следующую ячейку, пересчитываются все старые, и это занимает много времени. А хотелось бы, чтобы пересчитывалась только строка, в которую ввел новое значение. В примере, введите А или B в ячейку H13 и сами всё поймете :)
При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
Цитата
Юрий М написал:
Про зацикливание: отключайте отслеживание событий перед вызовом процедуры "сцепить2" и включайте его в конце макроса.
Невероятно, но работает! :) Последовал Вашему совету отключить/включить отслеживание событий, и теперь при изменении ячейки, запускается макрос и ничего не зацикливается. Теперь все отлично работает и правильно считает, но, как всегда бывает столкнулся с новой проблемой. Код который написал Tefra, после каждого ввода в ячейку нового значения, пересчитывает все старые. Объем данных очень большой, и это занимает большое кол-во времени. Как переписать этот код, и сделать так чтобы ячейка подсчитывалась только активная?
Вот собственно сам код...

Код
Sub сцепить2()
Application.ScreenUpdating = False

Dim lr As Long
Dim i As Long

lr = Cells(Rows.Count, 8).End(xlUp).Row 'Вычисляет последнюю строку с данными

For i = 9 To lr

    If Range("H" & i).Value = "U" Then Range("H" & i).Value = "O" Else Range("H" & i).Value = "U" 'Заменяем значения A на B в столбце H
    
    'Сцепляем значения в заданных столбцах
    Range("Q" & i).Value = Range("J" & i).Value & Range("K" & i).Value & Range("T" & i).Value & Range("U" & i).Value & _
    Range("AD" & i).Value & Range("AE" & i).Value & Range("AN" & i).Value & Range("AO" & i).Value & _
    Range("AX" & i).Value & Range("AY" & i).Value

    If Range("H" & i).Value = "U" Then Range("H" & i).Value = "O" Else Range("H" & i).Value = "U" 'Возвращаем исходное значение столбца H

Next i

 Application.EnableEvents = True
End Sub


При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
Перед тем как написать, естественно Я проверил. Этот вопрос, просто отсылка к дальнейшему тексту.
А вот переписать код, действительно не имею возможности, потому что не достаточно просто изменить "B" на "B с пробелом", там нужно переписать условие.Вот и попросил помощи у Tefra.
При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
кнопка цитирования не для бездумного копирования [МОДЕРАТОР]

Да, все отлично и правильно считает! Спасибо Вам огромное!
Я вот что подумал...Я могу изменить свои формулы вычислений на то чтобы они учитывали пробел после A или B, то не важно, будем ли мы вводить "A ", или просто "A".

VBA учитывает пробелы в .Value? Ну например если мы напишем не
Код
.Value = "B"
А
Код
.Value = "B "
Тогда можно будет сделать так:
1) Заменяем значения
"B" на "A " (A с пробелом)
"A" на "B " (B с пробелом)
2) сцепляем
3) Возвращаем
Если "A "(с пробелом) то "B " (с пробелом)
Если "B "(с пробелом) то "A " (с пробелом)

И благодаря этому мы сможем использовать вот этот код, который запускает макрос при изменении ячейки
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H9:H100")) Is Nothing Then
Call сцепить2
End If
End Sub
И тогда по идее, не должно быть зацикливания?
Поправьте меня, если Я не прав, ибо в экселе не очень сильно разбираюсь...все по логике у меня :)
Если не тяжело, не могли бы Вы попробовать изменить старый код на новый, потому что Я не знаю как правильно это сделать самому :(
Спасибо!
При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
Посмотрите пожалуйста мой последний прикрепленный файл. Там более четко показано что должно быть при А, и при B.
Данные в K-L, N-O, Q-R, T-U, W-X - получаются путем сложных вычислений(практически рандомно), грубо говоря они зависят от определенной последовательности A и B в вышестоящих ячейках.
Вот например если мы изменим ячейку H10(в моей последнем прикрепленном файле), то все данные в 10 строке изменятся(формулы которые я вписал в ячеки это просто пример, на самом деле ячейки изменятся хаотично, то есть я не знаю в какой колонке будет Y, а в какой N).
При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
Здравствуйте, Игорь. Немного не понял как это работает...не могли бы Вы объяснить?
Вот смотрите, я добавил пример более понятный.
Теоретически A противоположное значение, значению B. Если мы вводим в ячейку H10 значение "B", то у нас в сцепке Z10 = "NNNNY". И макрос должен посчитать, что было бы, если бы вместо B, стояло А в ячейке "AA10"(тоже сцепить). А было бы "YYYYY".
При изменении ячейки, сцепить результат, и вернуть начальное значение.
 
Здравствуйте, прошу помощи вот в таком вот задании.
Есть колонка куда вводятся значения A или B(в примере колонка H)
На основе эти значений, путем моих вычислений в колонках K-L, N-O, Q-R,T-U,W-X, есть значения, которые сцепил в колонке Z.
Нужно  сделать так, что при вводе в колонку H, значения A, оно само менялось  на B(при этом значения в колонках вычислений изменяться), и результат  сцепки записать в колонку AA. Далее вернуть значение A. И так же сделать  если значение будет B, поменять его на A, сцепить и вернуть B.
Значения в H, ввожу в ручную по одному, а так же вставляю путем копирования несколько значений.
Как сделать чтобы при вводе значения, автоматически подсчитывалась колонка AA?

Спасибо!
Поиск первого определенного значения в диапазоне, затем найти второе значение которое следует за ним
 
Здравствуйте!

Прошу помощи решить такую проблему:
В колонке A, есть значения A и B, которые рандомно идут друг за другом. В колонке B, на основе моих вычислений, появляются значения Y и N. И самое важное что нужно автоматизировать, это колонка C для которой такое условие:
В каждом диапазоне(первый диапазон B2:B6, второй диапазон B7:B13, третий диапазон B14:B19 и т.д.), то есть начало диапазона в следующей ячейке после Y или N, и конец диапазона на следующей Y или N. Формула должна искать первое встретившееся значение A из первой колонки, и если за ним следует так же A, то на против этого A в колонке C, должно быть YES. Если после нахождения первого A, за ним следует B, то в колонке C, должно быть NO. Если в диапазоне нету ни единого A, тогда пропускаем этот диапазон. После того как найдено какое либо из значений, мы бросаем этот диапазон и переходим к следующему(то есть значение находится один раз в одном диапазоне, и то что в нем идет дальше, нас уже не интересует)

Спасибо!
Сравнить все строки в трех столбцах, если совпадают - выводить значение которое в четвертом столбце.
 
Добрый день! Помогите пожалуйста.
Есть таблица в которой 3 столбца со значениями(В примере столбцы A,C,E). Нужно чтобы формула, или макрос находила строки в которых все три столбца совпадают, и на против каждой строки где найдено совпадение, выводила значение которое находится в столбце G, в ячейке столбца "J" повторяющейся строки.
В примере 1 строка совпадает с 5, по всем трем столбцам, нужно чтобы в  J1, выводилось значение которое находится в G5, и наоборот, в J5 выводилось значение которое находится в G1.
Прикрепил пример, спасибо!
В другом столбце составить список без пропусков
 
Сергей,исправил пример. Теперь значения получаются путем формул. В поиске не нашел похожего, потому что не знаю как правильно задать вопрос...
В другом столбце составить список без пропусков
 
Здравствуйте! В колонке "C", должны быть поочередно значения из колонки "A", без пропусков. В колонке "А", значения получаются путем формул.
Спасибо!

Пример ниже
Как сделать последовательное автозаполнение значений
 
БМВ,здравствуйте. Подскажите, а как сделать так как в примере? В колонке "C", должны быть поочередно значения из колонки "A", без пропусков. В колонке "А", значения получаются путем формул.
Спасибо!
Как сделать последовательное автозаполнение значений
 
Спасибо! Всё работает!
Страницы: 1 2 След.
Наверх