У меня есть простой первенствовать лист:Как только получить выбранное значение ячеек из отфильтрованных ячеек из Excel
Теперь я фильтровать таким образом, что значение ячейки> 1. Теперь мои данные выглядит следующим образом:
Теперь я выбираю те данные, которые я требую:
Обратите внимание, что я выбрал все мобильные номера.
Сейчас в моем коде, я пытаюсь получить все выбранные данные следующим образом:
Range selection = (Range)Globals.ThisAddIn.Application.ActiveWindow.Selection;
Но это дает мне клетки от запуска до конца. Я думаю, что excel также выбирает невидимые строки. Потому что строка 4, содержащая 0, также извлекается. Посмотрите на изображение ниже:
Итак, теперь я создал еще один диапазон и попытался добавить все значения ячеек, которые видны следующим образом:
Range onlyFilteredSelection = selection.Cells.SpecialCells(XlCellType.xlCellTypeVisible);
Теперь я могу видеть, что C# показывает мне только две строки. Почему она не отображает последнюю строку, которая находится после строки без фильтрации. Посмотрите на значения здесь:
Update:
После публикации этого вопроса, я получил мысль в моей голове, что я мог бы получать несколько диапазонов вместо 1 и так, Я начал изучать. И посмотри, что я нашел. Я обнаружил, что я был прав. Я получаю несколько диапазонов.
Вот код, который я пробовал:
Range selection = (Range)Globals.ThisAddIn.Application.ActiveWindow.Selection;
List<Range> onlyFilteredSelection = new List<Range>();
foreach (Range range in selection.Cells.SpecialCells(XlCellType.xlCellTypeVisible))
{
onlyFilteredSelection.Add(range);
}
Теперь я получаю 4 пунктов в selection
переменной. А в onlyFilteredSelection
есть 3 предмета.
Сейчас я нахожусь в другой неприятности:
Раньше я получал диапазон, поэтому я преобразовал его в строку, разделенную запятыми очень легко, используя нижеуказанным код:
string[] AllRecepientMobileNumberValues = ((Array)(selection.Cells.Value2)).OfType<object>().Select(o => o.ToString()).ToArray();
string RecepientMobileNumberValue = AllRecepientMobileNumberValues.Aggregate((a, x) => a + ", " + x);
Но теперь я получаю Список. Итак, теперь мой большой вопрос заключается в том, как преобразовать список в разделяемую запятыми строку ?????????
Вот и все. Он работает отлично. Я был очень напряжен, что даже не понял предложение select. Спасибо, что ответили на него. – Vishal