Tag: 范围

使用Python使用Range函数创build数组并写入excel列

我想创build一个数据容器,在我的python脚本(基于计算),然后写在excel使用win32com客户端和range()函数的列中。 我可以成功做到这一行,但不能做一列。 我基本上想要做的硬编码代码如下所示: import win32com.client as win32 from win32com.client import Dispatch Excel=Dispatch('Excel.Application') wb = Excel.ActiveWorkbook ws = wb.ActiveSheet data_container = [5],[6],[7],[8],[9] ws.Range(ws.Cells(11,9),ws.Cells(15,9)).Value = (data_container) 对我来说,棘手的部分是创build一个data_container,我可以在飞行中创build。 我知道关于元组,数据字典和列表的stackoverflow上有很多,但我不能解决它,并感到困惑(如果我看到警告“元组是不可变的”一次!!!!!!)。 每当我创build如下所示的东西时,它只是输出所有单元格中的第一个项目(即在所有单元格的下面填充5)。 data_container = [] data_container.append(5) data_container.append(6) data_container.append(7) data_container.append(8) data_container.append(9) ws.Range(ws.Cells(11,9),ws.Cells(15,9)).Value = (data_container) 我可以循环并写入每个单元格,但是由于时间限制,不想这样做。 我知道有可能使用其他python插件,但我希望这可以在许多计算机上使用,不一定有所有这些插件,可以防止人们使用我的脚本………我喜欢简单使用win32com设置,并有大多数项目工作除了这一点。 理想情况下,我想有一个字典/列表/matrix/数组中存储的列数……并能够写入一个范围引用数据容器的某个部分。 例如: ws.Range(ws.Cells(11,9),ws.Cells(15,9)).Value = (data_container[0]) data_container [0]包含[5],[6],[7],[8],[9] …… 我想要做的最终目的是将多个列(不一定按顺序)读入数据容器,进行修改,然后写回多个列(不一定按顺序)。 我非常感谢所有的构build块,目前可能是堆栈溢出,我只是无法把它们拉到一起,我试图把这一切都解决了。 任何帮助表示赞赏。

在Excel VBA中的自动filter

我有一个很大的电子表格数据,我试图用自动filter进行过滤。 我有两个autofilter语句,当我同时运行它们时,不返回任何数据(我知道这是一个错误)。 但是,当我分别运行它们时,它们工作正常。 我不确定是什么导致这个问题。 任何帮助将不胜感激。 每个“rng”是被过滤的特定列。 rng3.AutoFilter 1, Criteria1:=Array( _ "CMS Part D (CY " & Year(Date) & ")", "Commercial", "State Medicaid"), Operator:= _ xlFilterValues rng4.AutoFilter Field:=1, Criteria1:="No"

通过引用其他单元格来定义Excel范围

我试图创build列A中的单元格的数组的引用,而不是formsA1:A100的引用,我试图做formsA[value at cell B1]:A[value at cell B2]的引用A[value at cell B1]:A[value at cell B2] 。 Excel是否支持这种引用单元格的方法? 非常感谢。

错误1004使用范围单元格时

我正面临运行时错误1004与这段代码。 这很奇怪,因为这个代码在另一个模块中工作,但是当我把它放在一个用户表单中时,它不起作用。 使用断点时,我发现这一行发生了问题 Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol), Cells(LastRow, FindCol)) 我已经研究和尝试了一切 Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol)).Resize(LastRow) Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol)).Resize(LastRow, LastCol) With WorkBk.Worksheets(1) .Range(.Cells(FindRow + 2, FindCol), .Cells(FindRow + 2, FindCol)) End With 而没有人似乎工作。 此代码再次在另一个模块上工作。 我不知道为什么当我放在用户窗体的命令button子下时,它不工作。 请帮忙 完整代码: Dim FileName As String Dim SummarySheet As Worksheet Dim WorkBk […]

VBA SUMvariables范围

如果满足某些条件,我想要一个代码将variables行加起来。 例如,如果A12是数字并且B12是空的,则在单元格C12中插入一个公式来求和C3:C11。 然后在C22和C30执行相同的操作。 我有的问题是不知道如何定义起始行。 Sub Test() Dim y As Variant Dim r As Variant Dim StartRow As Variant LastRow = Range("C" & Rows.Count).End(xlUp).Row For y = 3 To 500 For r = 1 To LastRow If InStr(1, Cells(r, 1), "Amount") Then StartRow = r If IsNumeric(Cells(y, 1)) And IsEmpty(Cells(y, 2)) Then Cells(y, 3).Formula = "=SUM(C" […]

运行时错误“1004”:object'_Global的方法'Range'失败; 简单的复制和粘贴

我只是试图做一个简单的剪切和粘贴,以将F:G中的范围转换为D的未被占用的单元格,但是我不断收到该错误消息。 我的代码在模块中,我不知道我做错了什么! 完全新的VBA。 突出显示部分: Range("F" & RowNum & ":G" & RowNum).Select Sub MoveCells(RowNum as Integer) Range(“F” & RowNum & ":G" & RowNum).Select Selection.Cut Range(“D” & RowNum).Select ActiveSheet.Paste End Sub

查找数字列中两个单元格之间的特定增加值

我希望为以下问题find解决scheme。 考虑以下列序列中的一列数字: {} 2,2,2,2,4,4,4,4,7,7,7,7,8,8,13,13,13,13,13 现在我想检查一下在这个序列中是否有序列的增加。 所以如果我要增加5,我注意到在8和13之间的序列增加了5。 我有两个可能的解决scheme,但我似乎无法find一种无需VBA即可实现这一function的优雅方法。 解决scheme1:从列表中获取唯一值,取出数字之间的差异,看看是否有5。 解决scheme2:减去第一个值,直到第(N-1)个值从第二个值到第N个值,看看是否有5个值。 我也希望把代码放在一个单元格中! 任何帮助将不胜感激。

在继续之前检查范围内的值

所以现在我有一个任务跟踪器的Excel工作簿。 当包含完成date的列被填入时,它将取得该行并将其复制到另一个表(“完成”),然后从当前表(“当前”)中删除它。 在执行此操作之前,我希望执行的操作是检查“C”或“U”列的H到M列的值。 如果在该范围内的任何单元格不包含或者,那么我希望它退出并显示一条消息。 我不是要熟悉Excel或VBA,而是使用C ++。 这是现在的代码: Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim receivedDate As Range, nextOpen As Range, isect As Range Set receivedDate = Sheet1.Range("G3:G166") Set isect = Application.Intersect(Target, receivedDate) If Not (isect Is Nothing) And IsDate(Target) = True Then Set nextOpen = Sheet4.Range("A" & Rows.Count).End(xlUp).Offset(1, 0) Target.EntireRow.Copy Destination:=nextOpen.EntireRow Target.EntireRow.Delete […]

两个Sub程序,为什么这个函数在运行两次之后会导致一个对象variables错误

我有两个Sub程序,这两个都是非常长的时间来粘贴在这里的整体,但我已经缩小了代码块下面的函数和调用程序,这是导致错误。 我能够运行Sub 1和然后Sub 2没有任何问题,然后当我尝试重新运行Sub 1时,我收到一个object variable not set错误在这一行是在Sub 1: cName = "Current Price" cG = ActiveSheet.Rows.Find(What:=UCase(cName), Lookat:=xlWhole, SearchDirection:=xlNext).Column “当前价格”是拼写正确的,并且是作为parameter passing的每个工作表上的一个列标题,再次Sub 1首次运行良好,这可能是公开声明的问题吗? 该错误归因于下面的IsInArray函数 Sub 1 Sub Example(ws_string As String) Sheets(ws_string).Activate LR = Range("a1000").End(xlUp).Row LC = Range("zz1").End(xlToLeft).Column cName = "Fund ID" cA = ActiveSheet.Rows.Find(What:=UCase(cName), Lookat:=xlWhole, SearchDirection:=xlNext).Column cName = "BBH ID" cB = ActiveSheet.Rows.Find(What:=UCase(cName), Lookat:=xlWhole, SearchDirection:=xlNext).Column cName = […]

不能在vba中select一个范围的子集

当使用Range关键字来select一组单元格时,它的工作原理如下: Range(Cells(1, 2), Cells(3, 3)).Interior.ColorIndex = 3 – 但是当使用variables做类似的事情时,它只会突出显示最后一个元素Ex: Set GraphCells = Range("D10:FO12") GraphCells(Cells(1, 2), Cells(3, 3)).Interior.ColorIndex = 3 这只强调了cell(3,3) 任何人知道为什么