Для этого вам понадобится атрибут colspan. Таблицы спроектированы таким образом, что существуют отдельные строки и столбцы, где количество столбцов в таблице равно наибольшему количеству элементов TD в любой строке + количеству столбцов, которые охватывают эти ячейки (по умолчанию 1). Итак, вам нужно вычислить некоторую базовую единицу для столбца в вашей таблице, а затем сделать так, чтобы ячейки были кратны этой базе.
Следует помнить, что любая строка, в которой указано меньше столбцов (как одиночные столбцы TD, так и TD, занимающие более 1 столбца), будет заполнять как можно больше столбцов слева направо (если только текст rtl не является в CSS), поэтому вы можете иметь строки с разным количеством столбцов, потому что ячейка TD не может вылиться из своего столбца, если не установлен атрибут colspan (другими словами, TD должен занимать целое число столбцов, а не частичные столбцы)
EDIT:
Вы можете использовать только метод, который я описал, когда вы имеете дело только с 1 таблицей. Чтобы выровнять 2 таблицы, оберните их обе в родительский элемент (DIV), а затем присвойте обеим таблицам ширину 100%. Затем вы можете контролировать ширину div, что позволит внутренним таблицам использовать все доступное пространство. Тогда возникает такая проблема, когда вам просто нужно убедиться, что таблицы заполняют пространство одинаково, что проще, потому что оно более контролируемо.