border right + bottom, на крайних ячейках скрывается через отрицательный margin на ширину border при overflow: hidden у родителя. Внутри все селекторами nth-child + before/after перекрывающие border.
Для 3х ячеек в ряду и любого количества рядов:
https://codepen.io/elijah_tr/pen/wmrdMa
Код можно упростить, там для наглядности развернуто.