Tag: vba

按行sorting

有没有什么办法让人们用下面的例子来模仿macros中的sorting命令? 我有60行53列的数据。 在使用sorting命令时,我确实能够得到我想要的结果,但是相信如果我可以有一个macros,它会为我节省很多时间。 你可以看到之前和之后的图像有一个我一直在努力完成的视觉。 [ ] [ ] 例如 SORT LEFT TO RIGHT SORT BY [ROW 2] | SORT ON [VALUES] | ORDER [SMALLEST TO LARGEST] SORT BY [ROW 3] | SORT ON [VALUES] | ORDER [SMALLEST TO LARGEST] … … SORT BY [ROW 59] | SORT ON [VALUES] | ORDER [SMALLEST TO LARGEST] SORT […]

使用除一个之外的另一个间隔的行更改拖动公式

我一直试图找出这个好几个小时。 我有这个公式: =PROMEDIO.SI.CONJUNTO(Flankers!C15:C54;Flankers!D15:D54;1) 我手动完成了这一个。 我在Flankers表中获得了我的数据,现在我正在计算我的反应时间和我的准确性得分。 每个参与者的数据是相同的(每个参与者93行),我想要做的就是拖动这个公式,自动填充每个参与者(我有29个参与者在一列)。 当然,每个参考只改变1个数字。 例如,我有C2中的公式,所以当我将它拖到C3时,公式更改为 =AVERAGEIFS(Flankers!C16:C55;Flankers!D16:D55;1) 我需要所有的行增加93,保持范围相同(40个单元格),这样C3的单元格应该是= AVERAGEIFS(Flankers!C108:C147; Flankers!D108:D147; 1),然后C4的单元格应该是 =AVERAGEIFS(Flankers!C201:C240;Flankers!D201:D240;1) 等手工这是非常乏味(共2698行)。 有人可以解释这一点,并解释它在哪里我可以修改它为未来的分析?

在附件数量变化的情况下添加多个附件

我发送电子邮件给大约150个人,每封电子邮件可能有1到3个附件。 我可以发送电子邮件只需一个附件…得到多个附件是困难的。 假设附件文件path位于A1到C1之间。 我如何执行。 如果A1为空,则转到发送,如果没有,则附加文件如果B1为空,则转到发送,否则附加文件如果C1为空,则转到发送,否则,附加文件 发送: 这是我目前的代码:我意识到我的范围是不同于我上面发布的。 下面的脚本可以工作,但它只是一个附件。 Set rngEntries = ActiveSheet.Range("b5:b172") For Each rngEntry In rngEntries Set objMail = objOutlook.CreateItem(0) With objMail .To = rngEntry.Offset(0, 11).Value .Subject = rngEntry.Offset(0, 8).Value .Body = rngEntry.Offset(0, 10).Value .Attachments.Add rngEntry.Offset(0, 9).Value .send End With Next rngEntry 我想看起来有点像这样…. Set rngEntries = ActiveSheet.Range("b5:b172") For Each rngEntry In rngEntries Set objMail […]

如果行中的其他列不为空,填充列

使用 : Microsoft Office Excelmacros启用工作表2007年 Microsoft Visual Basic 我一直在寻找解决我的问题的方法,但却找不到解决问题的关键。 案件 在工作表中,我需要自动插入一个值(静态时间戳)到列的指定范围的列之后立足条件,他们都不是空(已被填充)。 示例目标 给定一个接一个地插入值的顺序,当列A:C范围内的值被填充时,我想要列D (指定范围之后的下一个)更新。 ColumnA ColumnB ColumnC AutoInsert filled filled filled 2016-01-11 20:57 filled filled filled filled filled filled 2016-01-11 20:58 我得到了什么? 现在当我向列中插入值当前时间戳出现在列B 。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A:A")) Is Nothing Then With […]

Vlookup Excel,引用不同的工作表

我正在尝试为我的电子表格创build一个简单的VLOOKUP函数,使用下面的代码:在第一个工作表中 =VLOOKUP("Salary",'December 2015_natwest_download'!$D$4:$E$43,1,FALSE) 这是我想要引用的工作表: 我试图引用的工作表: Value Category ======= ========== £530.00 Charlotte Owing -£53.00 Gym -£16.47 Water -£67.00 Phone -£11.01 Presents -£14.40 Eating out -£100.00 Food -£65.00 Other 但是,当我将VLOOKUP代码放入我的Excel中时,它将返回NA。 任何人都可以看到是什么导致错误?

在单元格中input公式会生成应用程序定义的或对象定义的错误

我已经search了一个解决scheme,并重新编码了VBA多次。 我结束了手动填充string(位,因为我总是算错了): PKHNTString = "=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);" PKHNTString = PKHNTString + """ "";""" PKHNTString = PKHNTString + """)" 这会导致一个string包含:= SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);“”;“”),可以在本地variables中find:PKHNTString:“= SUBSTITUTE(UPPER(AF:AF&AD:AD&AE :AE);“”;“”)“:string 如果我粘贴在单元格中的确切值,它的工作原理(删除空格,并将所有内容都转换为大写),但是当我把这个公式通过VBA像这样放入单元格: NWS.Cells(j, 48).Formula = PKHNTString 我得到错误:运行时错误'1004'应用程序定义或对象定义的错误。 任何帮助,将不胜感激! TIA,威廉

Excel VBA相当于Word VBA系统

我有一个Word VBA函数,我想在Excel VBA(这个select背后的原因来自这个问题 ),我被困在以下问题: Word VBA函数广泛使用System.PrivateProfileString ,当应用于Excel VBA时会引发Compile Error: invalid qualifier错误。 Excel中的等效语句是什么? 或者,我该如何解决这个问题? 使用示例: strHomeSharePath = System.PrivateProfileString("", "HKEY_CURRENT_USER\Volatile Environment", "HOMESHARE")

如果用户正在删除,检测工作表上的变化

我想知道如何检测用户是否删除或插入一个范围的内容。 如果他们正在删除范围说D14:D18。 然后,我想要执行一个macros,它也会删除E14:E18中的内容。 我只是不想删除E14:E18,如果他们input内容到D14:D18。 我试过了: If Selection.ClearContents Then MsgBox Target.Offset(0, 3).Style End If 但是,这让我陷入了一个无限循环。 更多的上下文: D:D有几百个单元用于input服务数量。 不是所有的D:D都应该被触及。 D:D只有单元格.Style = "UnitInput" 。 在E:E我有数据validation,让用户只能进入contractor 1或contractor 2但是,当在D:Dinput内容时,我运行一个macros将默认承包商(位于F:F )分配给E:E 。 因此,当用户将数量input到D:D它会正确指定默认承包商。 当他们删除D:D单数项目时,我已经处理了合适的承包商。 只有当他们从D:D删除了一系列的项目。 完整代码: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False On Error GoTo ErrHandler: If Selection.Rows.Count * Selection.Columns.Count = 1 Then If Target.Offset(0, 3).Style = "Contractor" […]

为什么你需要有时select对象来避免“对象不支持这个属性或方法”

我注意到,我有时会得到错误: 运行时错误“438”: 对象不支持这个属性或方法 在Excel VBA中,但如果我打电话。 .selectselect对象,然后这个错误消失。 例如,我最近想要改变工作表上一些链接图像的大小,并使用macroslogging器logging以下内容: ActiveSheet.Shapes.Range(Array("Picture 3")).Select Selection.ShapeRange.Height = 303.12 这段代码显然工作正常。 然后我改变了代码如下: Dim sheetReport as Worksheet Set sheetReport = Worksheets("Report") With sheetReport Dim pictureNumber As Long For pictureNumber 1 to 3 .Shapes.Range("Picture " & pictureNumber).ShapeRange.Height = 303.12 Next pictureNumber End With 现在我得到上面提到的错误, 但如果我然后改变这个代码 Dim sheetReport as Worksheet Set sheetReport = Worksheets("Report") With sheetReport […]

错误1004 – 将值写入单元格

我的代码很简单,但似乎无法摆脱这个错误。 我已经尝试将string分配给一个variables,然后分配它,取消保护工作表,并将代码放入一个新的子函数。 该错误发生在第二个Analyze() 。 Enum READYSTATE READYSTATE_UNINTIALIZED = 0 READYSTATE_LOADING = 1 READYSTATE_LOADED = 2 READYSTATE_INTERACTIVE = 3 READYSTATE_COMPLETE = 4 End Enum Dim html As HTMLDocument Sub Testing() Dim ie As InternetExplorer Set ie = New InternetExplorer ie.Visible = True ie.navigate "http://www.realclearpolitics.com/epolls/latest_polls/elections/" Do While ie.READYSTATE <> READYSTATE_COMPLETE Application.StatusBar = "Trying to reach RealClearPolitics.com" DoEvents […]