小编chr*_*sen的帖子

将字符串写入单元格时,VBA会插入额外的单引号

我正在尝试使用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 vba excel-vba

5
推荐指数
1
解决办法
8893
查看次数

在Excel 2010中嵌套IF语句

如何在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

我希望你能帮助我.提前致谢

excel excel-formula excel-2010

3
推荐指数
1
解决办法
5193
查看次数

VBA添加按钮,设置标题并将其链接到方法

我想在新工作表上添加一个按钮,设置标题并将其链接到模块中的方法.任何帮助,将不胜感激.谢谢!

excel vba

3
推荐指数
1
解决办法
6098
查看次数

VBA ByRef 在幕后如何工作?

假设我有一个采用 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 如何处理代码中的文字值?

非常感谢!

vba

3
推荐指数
1
解决办法
134
查看次数

从图表中删除空系列(使用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会移动系列索引?是这样的吗?这是我对错误的唯一解释.

我怎么循环系列并删除那些空的?

excel vba graph series excel-vba

2
推荐指数
1
解决办法
5600
查看次数

如果相邻单元格包含给定字符串,则检索值

这是我的电子表格的样子:

2 个电子表格:FooBar. Foo只有一个细胞,A1. Barn行和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 字符串,则解决相邻值单元格的问题。

google-sheets

2
推荐指数
1
解决办法
1364
查看次数

使用新 Excel 动态数组公式的累积求和公式

我在 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)

excel excel-formula spill-range

2
推荐指数
4
解决办法
1250
查看次数

Excel - 以编程方式剪切行

我有一个有30k +行的Excel工作表.我想削减前14k行,但手动执行此操作(用鼠标突出显示所选列)似乎是浪费时间.

我怎么能用语法编写呢?我实际上没有Excel的脚本编写经验,但我可以编程PHP.我确信我可以使用该PHPExcel模块PEAR创建一个脚本,可以复制前14k行并将其插入到新的电子表格对象中,但这似乎对我需要的内容要复杂得多.

另一种选择是将Excel文件保存为csv文件并导入到mysql数据库表中.这个问题是我需要削减前14k行的原因是那些列没有正确对齐(而其余的是),这使得db导入成为一个问题.

excel vba

1
推荐指数
1
解决办法
535
查看次数

VBA宏并将日期格式更改为mmm-yy

我遇到了一个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但它仍然无法帮助程序.

在此先感谢您的帮助.

excel vba excel-vba

1
推荐指数
1
解决办法
2万
查看次数

使用反向循环删除行 - VB

我有一个数据集,其中包含大量有关客户的信息。我希望在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)

excel vba

1
推荐指数
1
解决办法
493
查看次数

加速Excel自动过滤器

我有一本工作簿,它可以在工厂中生成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)

excel vba autofilter excel-vba

0
推荐指数
1
解决办法
7633
查看次数

如果前面没有逗号,如何在空格字符处拆分字符串

我正在寻找一种在空格字符处拆分文本的方法,但前提是空格字符前面没有逗号。下面是一些字符串的例子

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] 等...

excel vba

0
推荐指数
1
解决办法
75
查看次数

Excel - VBA:如果语句不能使用"Set Range = .Range(...)"

我注意到当我使用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语句的反指示?如果是这样,最好的写作方式是什么?提前致谢 !

excel vba excel-vba

-1
推荐指数
1
解决办法
4144
查看次数