diff --git a/R/remove_column.R b/R/remove_column.R
index 4fcfa8b..4e17507 100644
--- a/R/remove_column.R
+++ b/R/remove_column.R
@@ -35,19 +35,36 @@
         xml2::xml_text() %>% 
         stringr::str_trim()
     has_rownames <- cell_topleft==""
-    if(has_rownames) columns <- columns+1
     
-    body_rows <- xml2::xml_length(kable_tbody)
-    for(i in 1:body_rows){
-        for(j in columns){
-            target_row <- xml2::xml_child(kable_tbody, i)
+    head_row <- xml2::xml_child(kable_thead, 1)
+    ncols <- xml2::xml_length(head_row)
+    body_nrows <- xml2::xml_length(kable_tbody)
+    
+    rowspan = matrix(1, nrow = body_nrows, ncol=ncols)
+    for(i in 1:body_nrows){
+        target_row <- xml2::xml_child(kable_tbody, i)
+        target_ncols <- xml2::xml_length(target_row)
+        for(j in 1:target_ncols){
             target_cell <- xml2::xml_child(target_row, j)
+            span = as.numeric(xml2::xml_attr(target_cell, "rowspan")) %>% replace_na(0)
+            if(span>0){
+                rowspan[i,j]=1
+                rowspan[i+seq(from=1, to=span-1),j]=0
+            }
+        }
+    }
+    
+    for(i in 1:body_nrows){
+        target_row <- xml2::xml_child(kable_tbody, i)
+        for(j in columns){
+            target_cell <- xml2::xml_child(target_row, j)
+            if(rowspan[i,j]==1)
             xml2::xml_remove(target_cell)
         }
     }
-    target_row_head <- xml2::xml_child(kable_thead, 1)
+    
     for(j in columns){
-        target_cell_head <- xml2::xml_child(target_row_head, j)
+        target_cell_head <- xml2::xml_child(head_row, j)
         xml2::xml_remove(target_cell_head)
     }
     out <- as_kable_xml(kable_xml)
