"""
0) проблема твоей таблицы, в том что есть ячейки содержащие несколько значении и наити нужную можно только пройдя по ним и сравнивая целевое значение с теми что есть в ячейке , это долго тем более если несколько запросов от пользователя будет
1) правильнее будет прочитать таблицу, прочитать все значение и создать у себя удобную структуру с данными, что бы не читать эексель каждый раз.
три словарика например "возраст" "стаж" "коэффициент", быстрыи поиск по ключу то, что надо.
скорее всего есть более правильные и красивые структуры
2) НО если по какой-то не озвученной причине, важно читать напрямую, то либо брать значение ввода а потом искать в какой ячейке оно есть и запоминать индекс а дальше по наиденным индексам читать значение ячейки с коэффициентом
result = ws.cell(row=row_id, column=column_id).value
или можно так
создаешь словарь соответствия ввода пользователя индексам таблицы (если структура таблицы не изменяется. меняются только коэффициенты то можно руками прописать, если меняется то вначале читаешь фаил и делаешь словарь а потом по нему ищешь коэффициент, имеет смысл если запросов пользователя много)
"""
factory = {
"возраст":{18:3, 19:3, лет:номер_строки}
"стаж":{0:2, 1:3, 3:4, 4:4 , лет:номер_ряда }
}
command_row = input('введите команду и значение: ')
# например пользователь вводит
# возраст = 18
command = command_row.split('=')
# содержимое command = ['возраст ', ' 18']
#дальше обращаемся к нашим словарям по ключам и лучше через метод get наслучай если ввели что-то не то
row_id = factory.get(command_row[0].strip(),{}).get(int(command_row[1].strip()))
#равноценно factory["возраст"][18]
#даст тебе номер строки или столбца в зависимости от команды
#row_id , column_id значения которые вернет тебе этот словарь factory для команды возраст и стаж - неперепутаи)))
#получить само значение будет просто
#как тебе гпт написало, открываем фаил и таблицу а дальше берем наши индексы и читаем содержимое ячейки
result = ws.cell(row=row_id, column=column_id).value