我目前有一个功能集,它将所选枢轴表的所有值更改为平均值.
它工作正常,我已经组装了一个表单,它传递一个工作正常的值.
在这一点上我想做的是让它决定将值转换为什么.
但是,我不断收到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) 我想在第一个姓氏的情况下做一个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.
我目前在 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) 我正在索引column O具有组合名称的值的匹配项column L。
如果在我索引/匹配的表中找不到组合名称,我将被传回一个#N/A值。我怎么能避免这种情况?我查看了该ISNA函数,但它只传回 aTrue或False值。我可以用它来制作另一个公式来设置它,但我正在尝试找到一种更短、更快的方法。
当前使用的索引/匹配是:
=INDEX(O:O,MATCH(ADIST& " " &APROD,L:L,0))
Run Code Online (Sandbox Code Playgroud)
如果我被传回一个 #N/A 值,我希望它说"No Value".
我试图从 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) 我目前在工作簿中设置了一个表单.此表单包含一个按钮.点击按钮,我想调用位于"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.为什么会这样?
我正在尝试获取开始日期和结束日期。开始和结束数据应相差 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) 我试图检查我的范围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#的运算符后,我发现"=="用于比较,而"="用于赋值.
excel ×5
vba ×3
excel-vba ×2
batch-file ×1
c# ×1
cmd ×1
listobject ×1
pivot-table ×1
sql ×1
sql-server ×1
t-sql ×1
textjoin ×1
vlookup ×1
xlsm ×1