Tag: 范围

Excel:用VBA命名的范围

我想用VBA在Excel中定义一个命名范围。 基本上,我有一个可变的列号。 然后循环运行以确定该特定列中的第一个空单元格。 现在我想定义一个从该特定列的第2行到该列中的数据的最后一个单元格(第一个空单元格-1)的命名范围。 例如,指定了第5列,其中包含3个值。 如果我是正确的,那么我的范围就是(2,5)(4,5)。 我只是想知道如何使用整数而不是(E2:E4)来指定这个范围。 这是否可能? 我发现这个代码来定义一个命名的范围: 'Change the range of cells (A1:B15) to be the range of cells you want to define Set Rng1 = Sheets("Sheet1").Range("A1:B15") ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1 任何人都可以推动我正确的方向来指定这个范围只使用整数?

在电子表格中select非空行

我会尽量保持这个尽可能短,仍然充分解释,这里去:) 我search了论坛,我的VBA文学,并找不到一种方法来做我想要的。 我有一个电子表格rowTotal> = 60行。 行或者在每列的单元格中都有文本数据,或者这些行在模式和颜色索引集中都是空白的。 我需要一个macros来select所有非空行。 我首先试着循环遍历A列的单元格(如果A列中的单元格有文本数据,那么应该select它的行),检查activecell.value <>是否为空。 这里是jist(伪代码和代码的混合): Range("A1").Select loop to end if activeCell.value <> empty then stringVar = stringVar + cstr(activeCell.row) + ":" + cstr(activeCell.row) + "," end if end loop stringVar = Left(stringVar, (Len(stringVar) – 1)) Range(stringVar).Select 如果我有总共10行第2行和第8行有数据, stringVar会parsing为: "2:2, 8:8" 。 Range(stringVar).Select与写入Range("2:2, 8:8").Select结果相同。 如果在该范围内的行数<= 45,则这没有问题。 但是,只要数据中的行数超过45,代码就会在Range(stringVar).Select上失败。 我试过macroslogging器,它使用Union方法来解决这个问题。 所以我想,“自己,你可以用Union()。macros碁的MacroRecorder完成这个工作。 但是,唉,我的喜悦是失败的。 我想我可以把一个大string分成一个或多个string; […]

Excel C#将单元格转换为百分比

我需要将一个单元格与一个双重转换为一个百分比。 我在Excel中使用了一个macros,它说: Range("B5").Select Selection.Style = "Percent" 当我在c#中这样做,它不起作用: Excel.Range procentRange = xlWorksheet.get_Range("A1","A1"); procentRange.Style = "Percent"; 任何人都知道如何做到这一点?

Excel中的非空单元格Range C#

我想从当前单元格中select所有非空单元格到行的最后一个单元格。 如果我们使用 currentRange.End[XlDirection.xlToRight] 当非空单元不是连续的链接时,这不是一个好方法。 例如,单元格A1,A2,A3,A5,A6不为空,那么RangeA1.End[XlDirection.xlToRight]只能达到A3,即连接到RangeA1的最后一个非空单元格。 另外一个select: CreateRange(currentRange, lastRangePossibleinRow).SpecialCells(…) 我有3个问题: currentRange.End[XlDirection.xlToRight]看起来像一个不可靠的解决scheme。 例如,如果currentRange为空,则无论如何(本身)将返回1个单元格。 如何有效地将当前单元格中的select扩展到Row中的最后一个单元格? CreateRange(currentRange, get_range(currentRange.Row + sheet.Columns.Count.ToString())) ? 也许有更好的解决办法。 如何获得这个范围内不是空的单元格的集合? .SpecialCells(xlCellTypeConstants | xlCellTypeFormulas)将不起作用,例如,如果找不到,则.SpecialCells(xlCellTypeConstants)将抛出一个exception:没有find单元格。

VB:复制范围到另一个Excel应用程序

我试图解决一个相对简单的问题,但我不明白这一点。 我的目标是将主Excel应用程序的工作表中的单元格范围复制到第二个新创build的Excel应用程序的工作表中另一个范围(相同大小)。 我通过使用创build第二个应用程序 Set secondExApp = CreateObject("Excel.Application") 我正在使用这个参考进一步处理。 直到现在我已经尝试了两种不同的方式。 两者都不能正常工作。 0 .:准备/介绍 Set srcWb = Application.ActiveWorkbook Set srcSheet = srcWb.Worksheets("example") Set dstApp = CreateObject("Excel.Application") Set dstWb = dstApp.Workbooks(1) Set dstSheet = dstWb.Worksheets(1) 1:PasteSpecial – 提供一个图像(!),而不仅仅是范围 srcSheet.Range("A1:B2").Copy dstSheet.Range("A1:B2").PasteSpecial xlPasteAll 2 .: Range.Copy [目的地] – 不起作用 – 是否正确,我只能在相同的应用程序中使用这种方法? srcSheet.Range(srcSheet.Cells(…, …), srcSheet.Cells(…, …)).Copy _ dstSheet.Range(dstSheet.Cells(…, …), dstSheet.Cells(…, …)) […]

excel如何使大纲左侧的“+”符号

我使用Microsoft.Office.Interop.Excel.dll range.group方法,它将Excel或Excel文档中的列或行分组为大纲级别; 但是会出现如何在左侧设置"+"符号的问题,而不是根据最后一列或者几行的默认位置在右侧。 使用什么方法来控制方向以及如何使用这种方法。 这是最好的,如果这是一个例子。

在excel vba中使用“单元格”function

我想通过使用范围函数使用VBA在Excel中select一个单元格。 甚至在使用variables来指定范围而不是数字之前,我已经做了很多次了。 但是,我似乎无法使用单元格functionselect范围。 我知道这是可能的,因为我已经做了很多研究,并看到其他人的代码将成功运行使用此function。 下面是我用来尝试和select范围(这是只有一个单元格)的语法。 另外,当我运行代码时,我收到以下消息: “运行时错误”1004“:对象'全局'的'范围'方法失败。 感谢您的帮助。 Dim item As String Dim itempaste As Boolean Dim itemcnt As Integer itemcnt = 1 itempaste = False Range("X3").Select Do item = ActiveCell.Value If item <> "" Then Range("A18").Select Do If ActiveCell.Value = "" Then ActiveCell.Value = item itempaste = True Else ActiveCell.Offset(1, 0).Select End If Loop […]

在VBA中,如何使用函数返回数组/或写入单元格?

使用这个非常简单的function: Function WriteArray() as Variant Dim array(0 To 2) array(0) = "A" array(1) = "B" array(2) = "C" WriteArray = array End Function 我期待在Excel电子表格中看到整个数组的结果,但事实并非如此:我只得到第一个string。 我知道有一种方法可以在电子表格中显示整个数组(通过使用公式+ F2 + CTRL + SHIFT + ENTERselect一系列单元格),但我更喜欢VBA来处理这一切。 我也尝试使用Application.Callervariables直接写入“调用者”范围,但代码中断。 非常感谢你的帮助! 编辑:这是我尝试使用的另一个代码: Function WriteArray() As Variant Dim arr(0 To 2) arr(0) = "A" arr(1) = "B" arr(2) = "C" WriteArray = arr […]

在VLOOKUP中使用VBA函数中的命名范围

我的工作表上有以下内容: 显示货币的单元格[在A1 ] 一系列单元格(两列,一个用于货币,另一个用于相应的佣金百分比)[定义为/命名为RANGE ,范围为工作表] 试图根据A1和RANGE确定计算的佣金百分比的单元格 然后我有一个名为Calculate的VBA函数,如下所示: Function Calculate(LookupValue As Double, LookupRange As Range) As Double Calculate = [VLOOKUP(LookupValue, LookupRange, 2)] End Function 确定百分比的单元格具有以下内容: =Calculate(A1, RANGE) 问题是单元刚刚返回#VALUE! … 任何想法我可能做错了什么? 我已经尝试了几个东西,如types提示Range() ,传递LookupRange.Value2 VLOOKUP等,没有一个工作。 我也尝试debugging,注意LookupRange实际上包含Value2所需的范围,这就是为什么我试图将它传递给函数。 注意:上面提到的function和布局只是一个虚拟的 – 实际的function是比较复杂的,因为它依赖于谈判的利率,每月的利润等。这就是为什么我使用VBA的原因。 我知道我在查找时做了一些错误,因为它是唯一在函数内部失败的东西 – 其他所有的东西都是对应的并且计算出来的。

如何在Excel中使用VBSCript查找合并单元格的开始和结束行?

从VBS脚本中,我必须使用以下格式的Excel书籍: | A | B | C | —-|———–|———–|———–| 1 | Header1 | Header2 | Header3 | —-|———–|———–|———–| 2 | FOLDER1 | | | —-|———–|———–|———–| 3 | Item1 | 111 | 222 | —-| |———–|———–| 4 | | Item1Info | Item1Data | —-| |———–|———–| .. | | … | … | —-| |———–|———–| 11 | […]