Как программно удалить все xlCellTypeBlank в Excel, где ячейка пустая, а не пустая (то есть ячейка является пустой строкой) в C#
У меня есть ряд пустых строк в столбце AA (в результате специального значения копирования и вставки в Excel), формула, в которую я копирую / вставляю специальное значение в столбце AA, "=if(Z6<1,"",Z6)"
, Excel обрабатывает пустые ячейки как пустые, а не пустые.
Мне нужно либо преобразовать пустые ячейки / пустые строки в пробелы с помощью некоторого решения в формуле Excel, либо изменить мой код C# ниже, чтобы удалить пустые ячейки, а не пустые ячейки. Если бы я мог как-то преобразовать все эти ячейки с пустыми строками в пустые ячейки, этот код работал бы:
var deleteRange = plWS.get_Range("AA6", "AA149");
deleteRange.SpecialCells(Excel.XlCellType.xlCellTypeBlanks).EntireRow.Delete();
Я реализую этот код на нескольких листах, поэтому я пытаюсь сделать это без необходимости циклически перебирать все строки для эффективности / времени.
Я открыт для решений формул Excel, а также решений для программирования на C#.
1 ответ
Excel различает пустое (иначе ноль) и пустое. Если вы пытаетесь удалить пустые строки примерно так:
deleteRange.SpecialCells(Excel.XlCellType.xlCellTypeBlanks).EntireRow.Delete();
это невозможно, потому что при этом удаляются только пустые строки, а не пустые / пустые строки. Самый простой способ решить эту проблему - использовать функцию поиска и замены в C#, как показано ниже: НАЙТИ И ЗАМЕНИТЬ, чтобы сначала превратить ваши ячейки в ЧЕРНЫЕ. то есть, даже если вы заменяете на "", он фактически возвращает BLANK:
var deleteRange = loopWS.get_Range("AA6", "AA150");
deleteRange.Cells.Replace(What: "0", Replacement: "");