Tag: 范围

更快的方式来运行小的VBAmacros?

我正在使用这个需要运行近250ms的小代码:( i是一个循环的增量) Sheets("sheet1").Select val1 = Sheets("sheet2").Range("D" & Sheets("sheet1").Range("A" & i).Value + 1) val2 = Sheets("sheet2").Range("E" & Sheets("sheet1").Range("A" & i).Value + 1) Sheets("sheet1").Range("G" & i).Value = val1 Sheets("sheet1").Range("O" & i).Value = val2 我不知道为什么现在这么久了。 是因为我把数据从一个表格移动到另一个表格? 也许使用一个variant会更快? 你有什么指示我可以做些什么来加快速度? (这个循环完成300-400次,所以总的时间太长。) (不知道这里是否有更好的地方,或在“代码评论”,让我知道如果我错了) 感谢您的帮助! [编辑]这是您的build议更改后的循环,谢谢大家,这减less了30%的时间。 不过对我来说还是太长了,我已经注意到了你的build议,把表格sh1和sh2全部复制到一张表中,我会尽力去实现。 如果您有其他想法,请保留我的发帖=) i = 2 While sh1.Cells(i, 1).Value <> "" val5 = sh1.Cells(i, 1).Value2 + 1 […]

获取Microsoft.Office.Interop.Excel.Range的所有单元格坐标

有什么方法/财产,我可以用来获取范围的选定项目的string数组? 例如: 范围$B$2:$C$3将给出一个string数组,其值为: $B$2 $B$3 $C$2 $C$3 编辑:: 我在这篇文章中find了我的问题的答案。 其实我需要使用下面的程序: foreach (Range c in myRange) { string changedCell = c.get_Address( Type.Missing, Type.Missing, XlReferenceStyle.xlA1, Type.Missing, Type.Missing ); MessageBox.Show("Address:" + changedCell + " Value: " + c.Value2); }

Excel:显示单元格中的匹配内容

一点与Excel的noob。 我试图帮助我的部门做一个作业前台,根据所做的select插入数据。 到目前为止,我已经创build了一个下拉列表,它将检查单元号(数据validation – >列表 – >命名范围),然后添加单元名称(索引和匹配命名范围),并仅显示与该单元链接的可用条件(数据validation – >列表 – >间接)。 我遇到的问题是将标准描述符显示在所选标准旁边的单元格中。 我不想使用VBA或任何macros,因为工作人员和IT技术人员对安全性有偏见。 基于公式的解决scheme将是非常好的。 如果您下载 (更新的链接)我的电子表格可能更有意义。 谢谢 AC

Excel VBAselect单元格范围

我有下面的代码,但我得到一个“对象需要”的错误行Set CellRange = wks.Range(srange).Select 。 我已经尝试了很多东西,但无法弄清楚。 我想根据特定的单元格值在选定范围上设置背景颜色。 Function RowColor() Application.Volatile Dim wks As Worksheet Set wks = ActiveSheet Dim x As Integer Dim FirstRow As Integer Dim CellRange As Range Dim LastRow As Long LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row FirstRow = 6 'Loop through each row ScreenUpdating = False For x = FirstRow To LastRow Let […]

Excel对象模型中的范围减法

当使用.NET的Excel Interop库时,我可以通过调用类似的方法来find一个表示Range X的单元格偏移量的Range对象。 Range Y = X.Range[2,3]; 但是我应该怎么做才能执行逆操作,即:我有两个Range对象, A和B ,我想知道有多less行/列B从A偏移。 有谁知道最简单的方法来做到这一点? 有没有图书馆function? 谢谢。

Range.Value2&Range.Formula在C#中有不同的值,而不是VBA?

我想创build一个像GetPath(parameter)的UDF ,其中参数可以是像"B1"这样的单元格引用,也可以是GetPath根据input做的string,它将调用Web服务来获取input的path,例如公式单元格A1=GetPath(B1) ,单元格B1有一些string,函数应该返回path并放在单元格A1中,即A1的"Value2"应该是B1的path。 现在在C#中,当我做了FormulaCell.Value2 = path ,它的公式也改变了,但是我想“Formula”和“Value2”是不同的。 我知道这是可能的VBA,但我使用C#。 任何人都知道如何做到这一点? 谢谢 我GOOGLE,谷歌search,仍然没有find解决办法。 这听起来像一个基本的function,但在C#中是不可能的。 至less这是我通过研究得到的。 我相信你们中有些人以前遇到同样的问题,只是想知道你是如何解决的? 我将在VB.NET中尝试这个,如果这样的话我会用C#来引用它。 如果有人知道在VB.NET,请也张贴。 谢谢

VSTO Excel:如何检查是否可以select一个范围?

有什么办法来检查一个范围是否可以select(或以任何方式使用),就像某种validation? 我有VSTO 2.5 SE和Excel 2003的这个问题。每当我删除这些行, firstSelectedItem.Select()抛出一个HResult错误。 好的,我已经想出了一个办法,但是我正在寻找一个“更好”的方式,一些简单的比较或者看看是否可以selectfirstSelectedItem ,或者是否应该尝试select其他范围。 这里是示例代码。 using ExcelIntOp = Microsoft.Office.Interop.Excel; ExcelIntOp.Range firstSelectedItem = null; for (int i = selectedRange.Rows.Count; i > 0; i–) { firstSelectedItem = ((ExcelIntOp.Range)selectedRange.Cells[1, 1]); if (firstSelectedItem.Value2 == null) firstSelectedItem.EntireRow.Delete(System.Type.Missing); } if (firstSelectedItem != null) firstSelectedItem.Select();

我怎样才能跳过一个范围内的空白列?

我正在使用C#和Interop.Excel.Range返回一个工作表使用的列的范围,并将使用的列和行写入到datagrid视图。 一些列正在返回空白/ null。 Microsoft.Office.Interop.Excel.Range excelRange = wWorksheet.UsedRange; TabPage wTabPage = new TabPage(wWorksheet.Name.ToString()); DataGridView wDGV = new DataGridView(); wDGV.Dock = DockStyle.Fill; wTabPage.Controls.Add(wDGV); Sheets_TabControl.TabPages.Add(wTabPage); DataTable dt = new DataTable(); DataRow wNewRow = null; for (int i = 0; i < excelRange.Columns.Count; i++) { dt.Columns.Add(new DataColumn(i.ToString(), typeof(string))); } string wValue = string.Empty; Microsoft.Office.Interop.Excel.Range wRange = null; for (int […]

如何从电子表格中删除过滤的数据?

只是我一直在努力的一直在窃听我,我不禁认为别人会指出我一个简单的解决scheme。 我正在写的一部分程序涉及以下内容: 我有一个C#程序,使用autosort将一系列filter应用于电子表格。 已经sorting的数据,我想删除,目前它是这样做使用specialcells,但我认为我的方法不是辉煌。 在删除数据之前,我摆脱了第一行,这是我的标题,不包括在删除。 然而,这可能会导致一个问题,如果我删除标题和过滤的数据实际上没有更多的返回0行,那么当我打电话给我的specialcell删除它会标记出某种错误,说明没有范围。 最好的解决scheme是什么,理想情况下,我可以抓住过滤的范围,并检查数据是否有超过1行,但是我正在尝试的属性,如rows.count标记错误的数据types。 这是我的代码的简化版本 Excel.Range AllRange = mySheet.UsedRange; Excel.Range filtered = AllRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeVisible, Type.Missing); if (//SOME SORT OF COUNT SHOULD GO HERE IM GUESSING > 1) { mySheet.Rows.EntireRow[1].Hidden = true; filtered = mySheet.UsedRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeVisible, Type.Missing); filtered.EntireRow.Delete(Excel.XlDirection.xlUp); mySheet.Rows.EntireRow[1].Hidden = false; } 这样的事情,我希望有帮助。 感谢您就此事提供的任何build议。

将范围从不同的工作簿分配给variables

我想使用WorksheetFunction.Match函数,并需要加载一个区域。 Row = WorksheetFunction.Match(country, Countries, 0) 你能帮我构build国家variables吗? 我尝试了很多方法(包括下面),但似乎没有工作… Countries = Workbooks("PERSONAL.XLSB").sheets("Sheet1").Range("B:B") Countries = Worksheets("PERSONAL.XLSB!Sheet1").Range("B:B") Countries = Worksheets.Range("PERSONAL.XLSB.Sheet1!B:B") … 我也尝试了一些上面的“设置”在前面,但是也没有帮助…