我知道在Excel 中使用Activate和SelectVBA不是最佳实践.我已经看过在处理Ranges时如何避免它们的参考文献(例如:LINK).在处理时ChartObjects(或者除了Ranges之外的其他任何东西),我怎么能避免它们呢?
例如,一种修改y轴上最大值的方法Activate,Select看起来像这样(有效):
ActiveSheet.ChartObjects("MyChart").Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MaximumScale = Range("MaxVal").Value
Run Code Online (Sandbox Code Playgroud)
为了避免使用Activate和Select,我厌倦了声明变量,并使用它们,但这不起作用:
Dim ws As Worksheet
Set ws = Worksheets("Chart")
With ws.ChartObjects("MyChart").Axes(xlValue)
.MaximumScale = Range("MaxVal").Value
End With
Run Code Online (Sandbox Code Playgroud)
上面的代码运行(即不会抛出错误),但轴上的比例不会改变.我错过了什么?
编辑:使用这个"longwinded"版本:
With Worksheets("Chart").ChartObjects("MyChart").Chart.Axes(xlValue)
.MaximumScale = Range("MaxVal").Value
End With
Run Code Online (Sandbox Code Playgroud) 编辑:我已经编辑了我的问题更具体,因为霍希勒的评论帮助我开始.
我有excel中的数据,我用它来进行优化分析.在excel中,使用求解器很简单:我可以选择带公式的单元格,然后选择需要更改的单元格并添加约束,然后最小化.但是,当谈到Matlab的优化过程时,我迷失了方向.文档似乎只提供了分析简单单行函数的优化问题示例,如f(x)= - (x1)(x2)(x3).我无法弄清楚如何在我自己的情况下应用这些例子.
我试图最大化的功能相对复杂.作为输入,它采用了许多标量变量以及包含计算中使用的数据的多个结构.
我的问题是我试图通过改变三个标量变量来最大化函数的值,同时保持其他输入变量不变(因为它们是数据).更具体地说,我的函数看起来像:
function x = NameOfFunction (w1, w2, w3, a, b, c, Structure1, Structure2, Structure3)
Run Code Online (Sandbox Code Playgroud)
我想通过仅改变变量w1,w2和w3来最大化x.换句话说,我想让Matlab告诉我最大化x的w1,w2和w3的值,同时保留所有其他变量.非常感谢任何见解.
我有一个有两列的表:ColumnA和ColumnB.
如何添加第三列到我的表是ColumnA通过划分ColumnB?
我知道这看起来很简单,但我一直无法找到语法.
以下是表格列的摘录:
DateCol
…
2009-01-03
2009-01-08
NULL
NULL
2010-01-01
NULL
2010-01-07
NULL
2012-01-01
2012-01-02
2012-01-03
2012-01-04
2012-01-05
2012-01-06
…
Run Code Online (Sandbox Code Playgroud)
当我查询表并要求返回低于2012-01-01的4个值时,我得到以下结果:
2009-01-03
2009-01-08
2010-01-01
2010-01-07
Run Code Online (Sandbox Code Playgroud)
我目前的查询是:
SELECT * FROM myDatabase.MyTable WHERE DateCol < "2012-01-01" ORDER BY DateCol LIMIT 4
Run Code Online (Sandbox Code Playgroud)
如何强制查询返回NULL值?我正在寻找一个会产生下面输出的声明(请注意,顺序与表中显示的顺序相同).有一个主键列决定了订单.有没有办法返回值和NULL并"保留"该顺序?
2010-01-01
NULL
2010-01-07
NULL
Run Code Online (Sandbox Code Playgroud)