Обработка диапазонов excel getusedrangeofselectrange
Попробуйте проанализировать используемые диапазоны выбранных диапазонов.
Почему?
Usecase:
Пользователь не только выбирает диапазоны ячеек на листе xl, иногда он выбирает целую строку или, наконец, более одного столбца.
Один помеченный столбец наследует из-за Excel 2010 приблизительно 1.000.000 строк. Он оказывает влияние на время выполнения.
Как этого избежать?
Поэтому я думаю, что у меня есть две возможности.
1) считывать количество членов ячеек каждой области диапазона, чтобы огонь предупреждал пользователя о происходящем, потому что к большому количеству выбранных ячеек.
2) было бы неплохо иметь такой метод, как Range rngSelected.UsedRange() и не только, как уже существует для листа.
Моя обходная идея состояла в том, чтобы в первый раз оценить выбранные диапазоны пользователем и
второй шаг к диапазону используемых активов.
Но как я могу циклически сравнивать выбранный элемент диапазона с элементом используемого элемента диапазона?
Есть идеи?
Что я уже пробовал:
private Excel.Range SelectedUsedRange() { string sSelect; string sUse; Excel.Range rngSelected = null; Excel.Range rngSelectedUsedRange = null; if (rngSelectedRange == null) { rngSelected = Globals.ThisAddIn.Application.Selection as Microsoft.Office.Interop.Excel.Range; } mySheet.Cells[1, 1].Select(); Excel.Range rngUsed = mySheet.UsedRange; try { foreach (Excel.Range rngSelect in rngSelected) { foreach (Excel.Range rngSelectCell in rngSelect.Cells) { foreach (Excel.Range rngUse in rngUsed) { sSelect = rngSelectCell.Address; sUse = rngUse.Address; if (sSelect == sUse) { if (rngSelectedUsedRange == null) { rngSelectedUsedRange = rngSelectCell; } else { rngSelectedUsedRange = myExcelApp.Union(rngSelectedUsedRange, rngSelectCell); } break; } } } } } catch { } return rngSelectedUsedRange; } }