小编Bra*_*rad的帖子

使用VBA将值设置为.Function

我目前有一个功能集,它将所选枢轴表的所有值更改为平均值.

它工作正常,我已经组装了一个表单,它传递一个工作正常的值.

在这一点上我想做的是让它决定将值转换为什么.

但是,我不断收到Type-Mismatch错误.这是因为它被读作字符串.我该如何调整呢?

Private Sub CommandButton1_Click()
  MsgBox xl & ListBox1.Value
  Dim ptf As Excel.PivotField
  With Selection.PivotTable
    .ManualUpdate = True
    For Each ptf In .DataFields
      With ptf
        .Function = "xl" & ListBox1.Value 'xlAverage works here
        .NumberFormat = "#,##0"
      End With
    Next ptf
    .ManualUpdate = False
  End With
End Sub

Private Sub ListBox1_Click()
End Sub

Private Sub UserForm_Click()
End Sub        

Private Sub UserForm_Initialize() 'Set Values Upon Opening       
  With ListBox1
    .AddItem "Sum"
    .AddItem "Count"
    .AddItem "Average"
    .AddItem "Max"
    .AddItem "Min" …
Run Code Online (Sandbox Code Playgroud)

excel vba pivot-table excel-vba

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

Vlookup使用2列引用另一列

我想在第一个姓氏的情况下做一个vlookup来获得一个年龄.这将在A列中完成,然后在B列中完成.如果在A列中找到,则继续到B列,如果在B列中找到,则将年龄放在来自C列的J3中,否则将"无"放入.

这是一个例子:

J1 = John
J2 = Doe
J3 = =VLOOKUP J1 & J2,A1:C50,3,FALSE)
Run Code Online (Sandbox Code Playgroud)

J3是我到目前为止所拥有的.我是否需要嵌套Vlookup来检查A列,然后是B列才能获得年龄?

以下是表列表的示例:

A     B    C
Jeff  Vel  80
John  Fly  25
Jake  Foo  20
John  Doe  55
Run Code Online (Sandbox Code Playgroud)

J3 = 55.

excel excel-formula vlookup textjoin

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

关闭“在 statup,打开所有文件:”文件

我目前在 C 驱动器上设置了一个名为“XL Startup”的文件夹。当 Excel 启动时,引用它来打开此文件夹中的所有文件。

此文件夹中存在的文件称为“mymacros.xlsm”和“CopyMacro.xlsm”。这些文件包含宏并像这样隐藏在背景中..

Private Sub Workbook_Open()
    Me.Activate
    ActiveWindow.Visible = False
End Sub
Run Code Online (Sandbox Code Playgroud)

mymacros.xlsm 将通过 CopyMacro.xlsm 中的宏进行更新。这将确保 mymacros.xlsm 保持最新。但是,当我调用 mymacros.xlsm 关闭时,我收到一条错误消息:Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus.我如何才能让它正常工作?

“CopyMacro.xlsm”中的代码:

Sub Copy_One_File()

If Dir("C:\XL Startup", vbDirectory) = "" Then
MsgBox "Please create a folder named 'XL Startup' at C:\"
Else

    'Close Current Opened Macro
    Workbooks("C:\XL Startup\mymacros.xlsm").Close SaveChanges:=False 'ERROR HERE

    'Copy File
    FileCopy …
Run Code Online (Sandbox Code Playgroud)

excel vba xlsm

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

避免索引和匹配 #N/A 值

我正在索引column O具有组合名称的值的匹配项column L

如果在我索引/匹配的表中找不到组合名称,我将被传回一个#N/A值。我怎么能避免这种情况?我查看了该ISNA函数,但它只传回 aTrueFalse值。我可以用它来制作另一个公式来设置它,但我正在尝试找到一种更短、更快的方法。

当前使用的索引/匹配是:

=INDEX(O:O,MATCH(ADIST& " " &APROD,L:L,0))
Run Code Online (Sandbox Code Playgroud)

如果我被传回一个 #N/A 值,我希望它说"No Value".

excel excel-formula

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

SQL选择虚拟数据

我试图从 select 语句中创建一些虚拟数据。我可以轻松地用 1 个虚拟数据创建 1 列,或者用 1 个虚拟数据创建 2 列,但是我怎样才能用 2 个虚拟数据(2 行)创建 1 列?

(No column name)
    dummy1
    dummy2
Run Code Online (Sandbox Code Playgroud)

选择每列 1 个虚拟数据的语句:

Select 'dummy'

Select 'dummy1','dummy2'
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

3
推荐指数
2
解决办法
4852
查看次数

在表单中调用Sub

我目前在工作簿中设置了一个表单.此表单包含一个按钮.点击按钮,我想调用位于"ThisWorkbook"部分内的Sub.我怎么能这样做呢?

表格内的按钮......

Sub CommandButton1_Click()
    Call Main("Test")
End Sub
Run Code Online (Sandbox Code Playgroud)

需要在"ThisWorkbook"中调用的Sub

Sub Main(DPass As String)
    msgbox Dpass
End Sub
Run Code Online (Sandbox Code Playgroud)

这将给我一个编译错误:Sub or Function not defined.为什么会这样?

excel vba excel-vba

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

在bat文件中减去日期

我正在尝试获取开始日期和结束日期。开始和结束数据应相差 1 天。我在从开始日期或结束日期减去或添加时遇到问题。我该怎么做呢?我已经尝试-%1%+%1%.

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"

set /a y=%dt:~0,4%
set /a m=1%dt:~4,2%
set /a d=1%dt:~6,2%


set subdate=%y%%m:~-2%%d:~-2%

SET START_DATE= %subdate:~0,4%/%subdate:~4,2%/%subdate:~6,2% 00:00 AM
SET END_DATE = %dt:~0,4%/%dt:~4,2%/%dt:~6,2%+%1% 00:00 AM

echo %start_date%
echo %end_date%
echo done
Run Code Online (Sandbox Code Playgroud)

cmd batch-file

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

检查ListObject值

我试图检查我的范围ListObject,看它是否包含数字9.我不断得到一个"不能隐式转换类型'int'到'bool'".

if (xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].Range[1, 1].value2 = 9)
{
    xlSheet.Cells[5, 5] = "YES!";
}
else 
{ 
    xlSheet.Cells[5, 5] = "NO!"; 
}
Run Code Online (Sandbox Code Playgroud)

解决了答案:

if (xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].Range[1, 1].value2 == 9)
{
    xlSheet.Cells[5, 5] = "YES!";
}
else 
{ 
    xlSheet.Cells[5, 5] = "NO!"; 
}
Run Code Online (Sandbox Code Playgroud)

在阅读了C#的运算符后,我发现"=="用于比较,而"="用于赋值.

c# excel-interop listobject

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