Tag: vba

将combobox的行源定义为从A2开始的列A中的值

这是我到目前为止所尝试的, Private Sub UserForm_Initialize() Dim WBK As Workbook Set WBK = ActiveWorkbook WBK.Sheets("MFG_DATA").Range("A2", Range("A" & Rows.Count).End(xlUp)).Name = "Manufacturer" Me.MFGBOX.RowSource = "Manufacturer" End Sub 我得到一个错误1004,所以我没有正确定义我的对象?

使用VBA在Excel中创build季度,半年和年度汇总公式的好方法?

我在文档中有一个与图像布局相同的日历栏。 日历是从Power Pivot中复制的,但是我想用公式计算四分之一,半年和一年的单元格。 我想用VBA创build这些公式。 有没有什么聪明的方法来做到这一点? 日历可以在任何月份和年份开始和结束。 季度,半年和年度并不总是完整的,这意味着整个3个月,6个月或12个月并不总是包含在日历中。 我最好的想法是三次遍历所有列。 第一次,逐月build立一个SUM公式,直到登陆一年,然后把公式写到那一栏。 下一次,半年的专栏也一样。 第三次,为四分之一列做同样的事情。 但是这似乎太复杂了,不能做这么简单的事情。

用于公式的variables范围

我logging下我的macros中使用的代码,但它只会有用,如果该范围永远不会改变。 由于范围每次运行时都会改变,我怎样才能将“A1:E2”变成variables来解释变化的范围呢? 在这种情况下,我不认为xlLastCell会是一个正确的用法。 我知道如何获得结束单元格的列号和行号,但我无法弄清楚如何将它结合到我的代码中。 ActiveCell.Offset(2, 0).Range("A1:E2").Select Selection.FormulaR1C1 = "0"

VBAclosures空白工作簿

我之前发现了这个问题,但没有回答。 我有一些VBA代码格式不同的文件,并将其输出到Excel电子表格,然后将副本保存到两个不同的目录。 然而,我遇到的麻烦是它留下了一个空的工作簿打开,我不知道如何closures它。 我已经尝试了Workbooks.Close和Application.Quit,但都没有工作。 任何帮助将不胜感激。 这里是我所指的代码的一部分: sSaveAsFilePath = "\\Filesrv02\test\remit" + ".csv" sSaveAsFilePath2 = "\\Filesrv02\backup\remit" + Format(Date, "mmddyy") + ".csv" Application.DisplayAlerts = False ChDir "\\Filesrv02\test" ActiveWorkbook.SaveAs FileName:=sSaveAsFilePath, _ FileFormat:=xlCSV, CreateBackup:=False 'ActiveWorkbook.Close False ChDir "\\Filesrv02\Backup" ActiveWorkbook.SaveAs FileName:=sSaveAsFilePath2, _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close True Application.DisplayAlerts = False MsgBox ("done") End Sub

VBA复制粘贴工作簿相同的工作表之间,通过对话框打开

我已经看到了这个问题的答案,是我正在寻找的变化,但是当我试图修改代码到我的情况,我不断收到错误消息。 我有两本练习册,一本硕士“模板”和一份名为“YTDJune2015”的月度报告。 每个都有15张,两者都是相同的,我想将月度报告中的数据复制到模板中,该模板具有计算15个独特表格中每一个的附加数据的公式。 我想使用“打开”对话框作为select源工作簿的方式,因为报表每月更新一次。 在打开对话框中select源文档后,我不断收到“对象需要”错误,无法弄清楚如何允许它打开源工作簿。 代码的范围部分也可能不正确,但是我还没有能够通过源文档的开始,所以我不能检查它。 我希望它遍历源工作簿中的每个工作表并复制相同的范围,然后粘贴到目标工作簿中。 到目前为止,我拥有的代码是: Sub UpdateWorkbook() Dim wbSource As Workbook, wbDest As Workbook Dim ws As Worksheet, rng As Range Application.ScreenUpdating = False Set wbSource = Application.GetOpenFilename(FileFilter:="Excel Filter (*.xlsx), *.Xlsx", Title:="Open File(s)", MultiSelect:=False) Set wbDest = Workbooks.Open("Template.xlsm") For Each ws In wbSource.Sheets For Each rng In ws.Range("C8:AB117").Areas wbDest.Sheets(ws.Name).Range(rng.Address).Value = rng.Value Next […]

Excel公式 – 提取单元格中的特定数据

我需要能够从单元格中提取特定的graphics,但它并不总是出现在单元格中的相同位置。 单元格中的数据以不同的格式显示,下面有三个例子 (24M UNLTD 10GB£29 +£20 S1)(24M UNLTD + INS 30GB£34 +£30 S6)(12M SIMO 1GB£15 S1) 在前两个例子中,我需要拉第一个英镑数字,而不是第二个例子,在第三个例子中,我需要拉唯一的英镑数字。 我想要一个可以拉动数据的公式,但是如果不能通过单元格中的前3个字符分隔数据,那么我可以使用两个单独的公式。

与几个条件的查找

我想检查如果一个vlookup是好的,如果这没有发现什么,我试着用下一个公式 =IF(B6="","",IFERROR(IF(VLOOKUP(B6,D:D,1,0)<>"Not found","Found"),"Not found")) 但它不起作用,很容易,我希望这个公式告诉我,如果值是在这里与“find”,如果这个值是不是与“找不到”,以及如果我需要把值的单元格为查找与查找是空的,这个公式不显示任何东西,看起来像我即时很接近做:)

获取与特定值关联的表中的多个列名(标题)到单元格中

我需要获取与特定值关联到一个单元格中的多个列名(标题) 正如我所解释的那样,我需要将对应于值“n”的标题名称添加到E列。 我用公式 =INDEX((A$1:D$1),MATCH("n",A2:D2,0)) 这里。 但它只给出一个列名。 我也开放给vba脚本。 但我认为它不需要vba。 只是改善上面的公式,可能是。 我试过了,失败了。 任何帮助。 感谢你们

我怎样才能使我的VBA包含第二系列的数据

当我使用下面的macros时,它只适用于一个系列数据集。 我怎样才能适应它,以便我可以包括多个系列? 目前,如果我尝试使用它来标记第二个集合,它将删除第一个,等等… 提前致谢 Sub AddXYLabels() If Left(TypeName(Selection), 5) <> "Chart" Then MsgBox "Please select the chart first." Exit Sub End If Set StartLabel = _ Application.InputBox("Click on the cell containing the first(top) label", Type:=8) Application.ScreenUpdating = False For Each pt In ActiveChart.SeriesCollection(1).Points pt.ApplyDataLabels xlDataLabelsShowValue pt.DataLabel.Caption = StartLabel.Value Set StartLabel = StartLabel.Offset(1) Next End Sub

从多个单元格列中找出一个值,并在下一个空列中返回“X”

我试图把一个“X”或什么在下一个空列,我以后可以使用INDEX和INDERECT (因为工作表被命名为与我的主表中列A的范围相同)查找我的主要表格 需要在每个find该值的工作表中添加“X”。 在表格中,我需要find的数字总是在列A中。在我的主表中,值从B2:B23列出。 范围在每张纸上(从400行到5000行)不等。 有没有一个聪明的方法来做到这一点,我还没有find? atm有80张纸和一张主纸 码: Sub Mark_cells_in_column() Dim FirstAddress As String Dim MyArr As Variant Dim Rng As Range Dim I As Long With Application .ScreenUpdating = False .EnableEvents = False End With 'Search for a Value Or Values in a range MyArr = Array("34-2472", "36-437", "36-4351", "36-4879", "36-4982", "36-4981" _ , […]