Я поясню немного, что делает этот код, чтобы Вам было легче его читать. Он объединяет в группу все строки, идущие подряд и при этом имеющие одинаковый IP в первой колонке. Он сливает их с помощью атрибута rowspan и удаления лишних ячеек.
Обратный процесс аналогичен: берём из rowspan размер группы, добавляем нужное количество ячеек (содержимое копируем из первой), и затем, когда счётчик станет равен единице, удаляем атрибут rowspan у первой. Что тут ему не нравится...
