
В рамках моей работы в области ИКТ нам нужно создать игру «Морской бой», и один из способов, который я рассматривал, — это использование
=IF(ISNUMBER(SEARCH("*x*",C3)),"HIT","MISS")
для проверки, содержит ли эта ячейка x, но очевидно, что она будет статической и всегда будет проверять C3. Мне нужно искать C3:G8, но если я это сделаю
=IF(ISNUMBER(SEARCH("*x*",C3:G8)),"HIT","MISS")
Он выполнит поиск по всем этим ячейкам, и все они должны содержать символ x или нет, чтобы вернуть результат ПОПАДАНИЕ или ПРОМАХ.
Я думал, если дважды щелкнуть ячейку, например, D4, то она возьмет D4 и вставит ее в формулу, почти как динамическая формула. Это вообще возможно?
Может быть, я подхожу к этому вопросу неправильно? И если да, то как лучше подойти к этому вопросу?
Спасибо
решение1
"Динамическая формула", как вы описываете, потребует VBA. Я включил метод, чтобы вы начали - он позволяет пользователю вводить координаты и выяснять, есть ли у него ПОПАДАНИЕ или ПРОМАХ.
Формула, используемая в ячейке результата:
=IF(INDEX(C3:D5,MATCH(H3,B3:B5,0),MATCH(I3,C2:D2,0))="x","HIT","MISS")
Чтобы сделать его более читабельным (поскольку это домашнее задание...), я бы попробовал использовать именованные диапазоны и таким образом:
=IF(INDEX(grid,MATCH(H3,y_axis,0),MATCH(I3,x_axis,0))="x","HIT","MISS")
.
ОБНОВЛЯТЬ
Вот еще один похожий простой метод, который использует условное форматирование для отображения попаданий и промахов:
Условное форматирование использует следующие простые формулы:
=AND(B3="x",H3="x") //for a hit
=AND(B3="x",H3="") //for a miss
Формула для оставшихся попаданий выглядит следующим образом:
=COUNTIF(H3:L16,"x")-SUMPRODUCT((H3:L16="x")*(B3:F16="x"))