rowspans и colspans используются, только если ячейка должна охватывать 2 другие ячейки по горизонтали или вертикали, что не имеет место в вашем примере. Они не для определения ширины или высоты.
Удалите их и используйте классы, чтобы определить нужные свойства:
Кроме того, удалите те пустые tr
элементы, которые у вас есть - они не имеют смысла без td
s в них. ТАКЖЕ вложенная таблица с одной ячейкой довольно странная (вы могли бы просто заполнить эту ячейку содержимым), но, возможно, есть причина, о которой вы нам не сказали.
table, td, tr {
border: 1px solid black;
}
td {
width: 50px;
height: 50px;
}
td.b {
height: 100px;
}
td.a {
width: 100px;
}
<div>
<table>
<tr>
<td>a</td>
<td class="a">b</td>
</tr>
<tr>
<td class="b">c</td>
<td class="a b" >
<table>
<tr>
<td class="a b">d</td>
</tr>
</table>
</td>
</tr>
</table>
</div>