Страницы: 1
RSS
Определить числа, записанные в ячейке через пробел
 
Всем доброго времени суток. В таблице в столбце А 12 чисел (всегда от 1 до 24), в колонках В,С... и так далее необходимо подсчитать какие значения в колонке А, пример во вложении. К сожалению не смог сам найти формулу, просьба помочь. Благодарю.
Изменено: pabloescobar1949 - 12.12.2019 12:48:26
 
количество значений в ячейке может быть или 1 или 0.
По вопросам из тем форума, личку не читаю.
 
А может быть 0,5. Это когда начали писАть, а Enter ещё не нажат.  :D
А значения могут повторяться?
Изменено: msi2102 - 11.12.2019 18:01:18
 
Цитата
БМВ написал:
количество значений в ячейке может быть или 1 или 0.
Это ответ или вопрос, я не совсем понял?)
 
Это или ответ или комментарий к названию темы.
По вопросам из тем форума, личку не читаю.
 
Цитата
msi2102 написал:
А значения могут повторяться?
нет
 
Может так?
Только проверьте
 
Цитата
БМВ написал:
Это или ответ или комментарий к названию темы.
количество значений в ячейке может быть или 1 или 0 - это верно, только какой формулой можно быстро проверить какие значения в столбце А (в каждой ячейке), чтобы не считать руками все это?
 
Код
Sub Kol_vo()
Dim i As Long
Dim iLastRow As Long
Dim arr
Dim j As Integer
Dim FoundChislo As Range
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
 Range("B2:Y" & iLastRow) = 0
  For i = 2 To iLastRow
    arr = Split(Cells(i, 1).Value, " ")
    For j = 0 To UBound(arr) - 1
      Set FoundChislo = Rows(1).Find(arr(j), , xlValues, xlWhole)
      If Not FoundChislo Is Nothing Then
        Cells(i, FoundChislo.Column) = 1
      End If
    Next
  Next
End Sub
 
pabloescobar1949,
А мой макрос пробовали?
 
Добавил макрос, не работает (ну либо я как-то криво прикрутил), во всех ячейках - 0
 
если значения в ячейку собраны логичным способом, то количество значений в ячейке на 1 больше чем количество разделителей значений
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
pabloescobar1949, У Вас слишком фильдеперстовые пробелы, поэтому возможно и не получается  :D . Я Вам выложил решение с помощью формул, но если замените свои пробелы на обычные, то формула перестанет работать.
Изменено: msi2102 - 12.12.2019 13:09:13
 
Не жмите на кнопку цитирования без необходимости [МОДЕРАТОР]

Благодарю, работает.
 
У вас какие-то хитрые пробелы между числами в ячейках столбца А.
Попробуйте скопировать пробел из строки формул и вставить в макрос
В строку , где кавычки " "
 
msi2102, если пробелы - не пробелы, то и СЖПРОБЕЛЫ -  как мертвому припарка :)
А чтобы функция не обижалась - ЕСЛИ тоже можно убрать, пусть вместе уходят:
=--ЕСЛИОШИБКА(ПОИСК(" "&B$1&" ";" "&$A2&" ")>0;)
 
pabloescobar1949,
Цитата
во всех ячейках - 0
Это значит, что макрос сработал и все дело в пробелах
между числами в ячейках столбца А
замените пробел в строке (то что в кавычках)
Код
arr = Split(Cells(i, 1).Value, " ")
 
vikttur, По поводу СЖПРОБЕЛЫ Вы правы, только ее нужно было не удалять, а заменить на ПОДСТАВИТЬ. Объясню логику которой руководствовался. Скорее всего эти значения были получены из какой-то другой программы, предположим, что это WORD, если данные были в виде таблицы, то вопросов может не возникнуть, а если в виде обычного текста, то его могли править вручную, удаляя существующие НЕРАЗРЫВНЫЕ ПРОБЕЛЫ и заменяя их обычными, ведь пользователь поняв, что он ошибся, не будет утруждать себя нажатием клавиш Shift + Ctrl + ПРОБЕЛ, а просто клацкнет пробелом (да и для большинства пользователей это один и тот же символ). Поэтому логичнее всего, будет учесть замену этих символов в формуле или Ctrl+H. СЖПРОБЕЛЫ появилась после того, как обратил внимание, что в конце значения стоит пробел, не стал выяснять какой, ведь если простой то его надо удалить.
А по поводу "--" или ЕСЛИ в данном случае это дело вкуса, к тому же, не дай Бог, потом придется объяснять тому кто будет юзать эту формулу, что это такое и зачем оно там взялось. Мне однажды пришлось вести диспут на тему: 0 или ЛОЖЬ в конце ВПР, ладно в справке написано, что это одно и тоже, а то так и не смог бы объяснить почему. А тут еще два минуса вначале, это вообще взрыв мозга, потому что минус это вычесть, два минуса это два раза вычесть, а не умножить на -1, как многие думают  :D  :D  :D .
Поэтому конечная формула, на мой взгляд должна иметь вид:
=ЕСЛИОШИБКА(ЕСЛИ(ПОИСК("ПРОБЕЛ"&B$1&"ПРОБЕЛ";"ПРОБЕЛ"&ПОДСТАВИТЬ($A50;"НЕРАЗРЫВНЫЙ ПРОБЕЛ";"ПРОБЕЛ")&"ПРОБЕЛ")>0;1);0)
или
=--ЕСЛИОШИБКА(ПОИСК("ПРОБЕЛ"&B$1&"ПРОБЕЛ";"ПРОБЕЛ"&ПОДСТАВИТЬ($A52;"НЕРАЗРЫВНЫЙ ПРОБЕЛ";"ПРОБЕЛ")&"ПРОБЕЛ")>0;)
Страницы: 1
Наверх