我正在尝试使用VBA编写此公式:
ActiveCell.Value = "=f(R[-1]C[0],Sheet1!" & ColumnLetter & i & ")"
Run Code Online (Sandbox Code Playgroud)
其中ColumnLetter是我的宏之前计算的一些变量字母,而f是某个函数,而我是一些数字.
问题是,当我运行它时,相反给出了单元格:(如果ColumnLetter = F,i = 16):
=f(R[-1]C[0],Sheet1!'F16')
Run Code Online (Sandbox Code Playgroud)
但我想要:
=f(R[-1]C[0],Sheet1!F16)
Run Code Online (Sandbox Code Playgroud)
为什么VBA或Excel会在F16附近放置这些单引号?如果我在公式中不包含R [-1] [0]作为参数,它不会插入这些额外的引号,但我需要包含它.
非常感谢!
如何在Excel 2010中嵌套IF语句?我发现我的灵感试图从Evolus Pencil支持门票组织数据.
这是我想要的结果:我想嵌套IF语句,以便在不同的状态级别之间进行选择,例如固定,新建,无效,完成,复制等.但是,我必须制作几个表来实现这一点,当我尝试测试时它,IF语句只给我第一个选择(固定).
以下是测试数字是否为1-6并添加数字和状态级别的公式:
=IF(U2="1",
CONCATENATE(VALUE(U2),$V$2,IF(U2="2",
CONCATENATE(VALUE(U2),$W$2,IF(U2="3",
CONCATENATE(VALUE(U2),$X$2,IF(U2="4",
CONCATENATE(VALUE(U2),$Y$2,IF(U2="5",
CONCATENATE(VALUE(U2),$Z$2,IF(U2="6",
CONCATENATE(VALUE(U2),$AA$2,"NO")
Run Code Online (Sandbox Code Playgroud)
然而,在相应的单元格中的结果是:Cell是U2 1FixedFALSE Cell是U3 false
请在此处查看电子表格
http://win7guruquestions.posterous.com/my-spreadsheet-illustrating-selection-and-if
我希望你能帮助我.提前致谢
假设我有一个采用 Integer 值 ByRef 的函数,如下所示:
Function myFunc(ByRef funcVal As Integer)
funcVal = funcVal + 1
End Function
Run Code Online (Sandbox Code Playgroud)
假设我这样称呼它:
Dim myVal as Integer
myVal = 5
Call myFunc(myVal)
Run Code Online (Sandbox Code Playgroud)
据我了解,计算机已为我的myVal变量分配了空间,并将值 5 放入该空间中。当我调用 时myFunc,计算机基本上会将指向该位置的指针传递给myFunc,因此当myFunc递增 时funcVal,它实际上是在递增同一位置,因此myVal也递增。
但是如果我像这样调用 myFunc 会发生什么:
Call myFunc(5)
Run Code Online (Sandbox Code Playgroud)
计算机是否仍然给出myFunc一个指针,如果是,则指向什么指针?或者它是否必须分配一些新空间funcVal(而不是像myVal我之前的示例中那样仅使用相同的空间)?
我想这里还有一个相关的问题 - VBA 如何处理代码中的文字值?
非常感谢!
我试图从Excel图表中删除所有空系列.
Dim isEmptySeries As Boolean
For Series = 1 To .SeriesCollection.count
.SeriesCollection(Series).ApplyDataLabels Type:=xlDataLabelsShowValue, AutoText:=True, LegendKey:=False
isEmptySeries = True
For i = 1 To .SeriesCollection(Series).points.count
If .SeriesCollection(Series).points(i).DataLabel.Text = 0 Then
.SeriesCollection(Series).points(i).HasDataLabel = False
Else
isEmptySeries = False
.SeriesCollection(Series).points(i).DataLabel.Font.Size = 17
End If
Next i
If isEmptySeries Then
.SeriesCollection(Series).Delete
End If
Next Datenreihe
Run Code Online (Sandbox Code Playgroud)
该脚本在ApplyDatalabels行失败("Method SeriesCollection of Object Chart failed").我相信当删除其中一个系列时,Excel会移动系列索引?是这样的吗?这是我对错误的唯一解释.
我怎么循环系列并删除那些空的?
这是我的电子表格的样子:
2 个电子表格:Foo和Bar.
Foo只有一个细胞,A1.
Bar有n行和2列。
现在我想要一个公式,以便如果相邻列包含给定字符串,A1它可以对电子表格第二列中的所有值求和。Bar
例如,如果我的Bar电子表格如下所示:
-----------------
Machine A | 500 |
Mach B | 321 |
Door | 34 |
Machines C | 2 |
-----------------
Run Code Online (Sandbox Code Playgroud)
A1现在应该对第一列单元格包含单词Machine,Mach或 的行的所有值求和Machines,因此 中的值A1将为 823。
我想它是IF, SEARCH/的某种组合FIND,但我的主要问题是如果找到 a 字符串,则解决相邻值单元格的问题。
我在 Excel 中使用新的动态(即溢出)公式。我想要一个动态数组,它是另一个动态数组的累积或运行总数。
假设我有以下动态数据A1:A8:
12
20
14
13
12
13
26
11
Run Code Online (Sandbox Code Playgroud)
在这个数组中找到差异是微不足道的:
=OFFSET(A1#,1,0)-A1#
8
-6
-1
-1
1
13
-15
-11
Run Code Online (Sandbox Code Playgroud)
但是如何使用新的动态公式获得运行总数?
12
32
46
59
71
84
110
121
Run Code Online (Sandbox Code Playgroud) 我有一个有30k +行的Excel工作表.我想削减前14k行,但手动执行此操作(用鼠标突出显示所选列)似乎是浪费时间.
我怎么能用语法编写呢?我实际上没有Excel的脚本编写经验,但我可以编程PHP.我确信我可以使用该PHPExcel模块PEAR创建一个脚本,可以复制前14k行并将其插入到新的电子表格对象中,但这似乎对我需要的内容要复杂得多.
另一种选择是将Excel文件保存为csv文件并导入到mysql数据库表中.这个问题是我需要削减前14k行的原因是那些列没有正确对齐(而其余的是),这使得db导入成为一个问题.
我遇到了一个excel宏(VBA)的问题,该宏用于从excel电子表格中获取日期,减去一个月并将其重新格式化为MMM-YY.基本上我想采取3/31/2013并将其转换为2月13日
这是我的代码:
Dim ReportDate As Date
ReportDate = Worksheets("Current").Cells(2, 16) 'ex. 03-31-2013
prevMonth = Format((Month(ReportDate) - 1) & "/" & Day(ReportDate) & "/" & Year(ReportDate), "mmm") & "-" & Format(ReportDate, "yy")
Debug.Print prevMonth
Run Code Online (Sandbox Code Playgroud)
我得到的结果是2/31/2013-13
所以我尝试更改prevMonth变量:
prevMonth = Format((Month(ReportDate) - 1) & "/" & Day(ReportDate) & "/" & Year(ReportDate), "mmm-yy")
Run Code Online (Sandbox Code Playgroud)
但是再次获得2013年2月31日
我试图将prevMonth声明为整数或日期但我得到类型不匹配错误.我只能将它声明为String但它仍然无法帮助程序.
在此先感谢您的帮助.
我有一个数据集,其中包含大量有关客户的信息。我希望在Yes输入到 row 中的单元格时将此信息移动到另一个工作表中K,并且包含要从第一个工作表中删除的信息的原始行
我通过按下按钮来完成此操作。工作正常,并且行被删除,但是当然,当它删除该行时,行号会向上移动一位,因此会跳过下一行(第 15 行被删除,然后第 16 行变为第 15 行等),所以我认为反向循环是可行的方法,但我一生都无法弄清楚这一点 - 我认为这很简单!这是我正在使用的代码:
Private Sub UpdateSheet2_Click()
Dim c As Range
Dim Source As Worksheet
Dim Target As Worksheet
'Change worksheet designation as needed
Set Source = ActiveWorkbook.Worksheets("Sheet1")
Set Target = ActiveWorkbook.Worksheets("Sheet2")
For Each c In Source.Range("K:K") 'Covers all rows
If c = "yes" Then
Source.Range("A" & c.Row & ":B" & c.Row).Copy Target.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Source.Range("D" & c.Row & ":F" & c.Row).Copy Target.Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
Source.Range("H" …Run Code Online (Sandbox Code Playgroud) 我有一本工作簿,它可以在工厂中生成I/O信号的密度图.整个工作簿由用户输入信号类型和它所在位置的铅板驱动.在生成密度图的工作表上,我为用户提供了在密度图中单击感兴趣的单元格的功能.当用户点击单元格时,on_selectionChange宏将运行计算工厂中的位置.然后将该位置送入铅板自动过滤器,以向用户显示工厂中该点的实际信号.我的问题是立即计算位置信息,但是当我将过滤条件应用于自动过滤器时,过滤器需要12秒才能应用,并且代码要从密度映射表更改为主数据库表.所以有人知道如何使用自动过滤器加速我的代码.我在运行宏时关闭了屏幕更新和应用程序计算.在我开始向工作簿添加其他工作表之前,这从未如此缓慢.下面你可以看到我如何计算位置的代码.有人可以帮我解决这个问题
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
' Filter the I/O data to those associated with the clicked cell
' Turn off screen updating, this speeds up Calc
Application.ScreenUpdating = False
' Turn off automatic calculations
Application.Calculation = xlCalculationManual
' Setup benchmarking
Dim Time1 As Date
Time1 = Timer
Dim Time2 As Date
Dim rngOLD As Boolean
Dim rngNEW As Boolean
Const Building_rng = "C4:K6"
Const Lvl_rng = "C4:E30"
Const RL_rng = "C4:C6"
Const FB_rng = "C4:E4"
Dim NEW_Offset As …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在空格字符处拆分文本的方法,但前提是空格字符前面没有逗号。下面是一些字符串的例子
P3, 367 P5, 367 P5, 367
或者
P3 P5 P5
或者
P3, A6, A7 P4 P5 等等...
将它们在空白字符处拆分如下
arr = VBA.Split(ActiveCell.Value, " ")
Run Code Online (Sandbox Code Playgroud)
期望的结果如下:
[ P3, 367 P5, 367 P5, 367]
或者
[ P3 P5 P5]
或者
[ P3, A6, A7 P4 P5] 等...
我注意到当我使用If语句尝试将不同范围的单元格设置为变量cityListRange时,我的VBA程序不再起作用了.基本上,如果单元格"A:20"的内容是"Metro Manila",我想将cityListRange初始化为G21:G37(马尼拉大都会的城市列表).如果没有,那么它将是另一个列表(G41:G43)(稍后在我的代码中它使用与cityListRange作为参考的匹配方法).
Set ws = ThisWorkbook.Sheets("Feuil2")
With ws
If Range("A20").Value = "Metro Manila" Then
Set cityListRange = .Range("G21:G37") 'list of cities to compare to (IN METRO MANILA)
Else
Set cityListRange = .Range("G41:G43") 'list of cities to compare to (IN PROVINCE)
End If
End With
Run Code Online (Sandbox Code Playgroud)
当我将cityListRange初始化为一个且只有一个范围时,我的整个程序工作正常,但是当我添加我的if语句时,它停止工作,并且在程序结束时没有返回任何结果.你知道在这种情况下是否有使用If语句的反指示?如果是这样,最好的写作方式是什么?提前致谢 !