我需要在工作表中选择一组单元格。我可以找到如何选择范围,但不能在单元格被隔离时#34;
例如" $ D $ 4",$ G $ 9" ...
我的代码:
var excelApp = Globals.ThisAddIn.Application;
List<string> unlockedCells = new List<string>();
foreach (_Excel.Range cells in excelApp.ActiveSheet.UsedRange)
{
if (!cells.Locked)
{
unlockedCells.Add(cells.Address);
}
}
unlockedCells.ForEach(_c =>
{
excelApp.Range[_c].Select();
});
这里的问题是,每次选择新范围时,先前的选择都会丢失。
另一种方法。它不起作用,引发异常Exception from HRESULT: 0x800A03EC at Microsoft.Office.Interop.Excel._Application.get_Range(Object Cell1, Object Cell2)
我得到的范围如下:"$D$8,$E$8,$D$9,$E$9,$D$10,$E$10,$D$11,$E$11,$D$12,$E$12"
StringBuilder output = new StringBuilder();
...
output.Append(String.Format("{0},", cells.Address));
string rangeDef = output.ToString().Left(output.Length - 1);
excelApp.Range[rangeDef].Select();
我怎么能实现它?
Office Version 2016
答案 0 :(得分:0)
虽然excelApp
本身确实具有Range
属性,但工作簿或工作表不明确。相反,请尝试引用某个工作表的Range
:
StringBuilder output = new StringBuilder();
output.Append("C4,");
output.Append("D5,");
output.Append("E6,");
string rangeDef = output.ToString().Substring(0, output.Length - 1);
Worksheet worksheet = excelApp.ActiveSheet;
Range range = worksheet.Range[rangeDef];
range.Value = "test";
为我做了一些最小的测试。
答案 1 :(得分:0)
iris %>%
mutate(Sepal.Area = Sepal.Length * Sepal.Width,
Petal.Area = Petal.Length * Petal.Width,
range = cut(Sepal.Area, breaks = c(0, 17, 22, Inf))) %>%
group_by(Species, range) %>%
summarize(count = n())
# Species range count
# <fctr> <fctr> <int>
# 1 setosa (0,17] 25
# 2 setosa (17,22] 22
# 3 setosa (22,Inf] 3
# 4 versicolor (0,17] 28
# 5 versicolor (17,22] 21
# 6 versicolor (22,Inf] 1
# 7 virginica (0,17] 10
# 8 virginica (17,22] 31
# 9 virginica (22,Inf] 9
似乎我错过了工作表名称。