Tag: vba

用Excel中的string操作 – 如何删除部分string,如果另一部分?

我做了一些谷歌search,找不到任何东西,虽然也许我只是看错了地方。 我也不是很擅长VBA,但是我确信我可以用正确的方法来解决这个问题:) 我有一个string我正在build设,这是各种细胞的串联,基于各种条件。 我按顺序打这些。 =IF(A405<>A404,G405,G405&H404) 我想要做的是回到我的连接列表中,如果替代者在列表中,则删除一个被取代的值。 例如,请参阅以下列表: A, D, G, Y, Z 我想删除D 当且仅 当 Y存在。 我将如何去做这件事? (VBA或in-cell,虽然我更喜欢in-cell)

在MS-Access VBA中查询Excel工作表(使用ADODBlogging集)

我想在VBA中查询Excel工作表并指定条件。 简单的查询"SELECT * FROM [PCR$]"完美地工作,但我不知道如何添加一个WHERE子句。 我试过cmd2.CommandText = "SELECT * FROM [PCR$] WHERE ([B1] IS NOT NULL)"但它抱怨缺less参数。 这是完整的代码: Dim rs2 As New ADODB.Recordset Dim cnn2 As New ADODB.Connection Dim cmd2 As New ADODB.Command Dim intField As Integer Dim strFile As String strFile = fncOpenFile If strFile = "" Then Exit Sub With cnn2 .Provider = "Microsoft.Jet.OLEDB.4.0" […]

将macros中的多个单元合并为一个?

我也有类似的问题: 在Excel中使用VBA将2个单元格的内容合并到另一个第3个单元格中 但是我想在一列中合并一系列单元格,例如A2:A50。 有时我有超过300个单元格被合并成一个。 值是文本。 有没有什么办法可以修改这个macros,使它在一个范围内而不是两个单元格上工作? 谢谢!

使用VBA将ArrayFormula设置为许多Excel单元格

我有一个数组公式,输出一个单一的值,我想给一大堆单元格这个相同的数组公式。 问题是,当我将数组公式分配给范围时,它以这样的方式解释公式,它们都将单个调用的输出共享给数组公式,而不是每个公式都输出一个单独的值。 为了向您展示我的意思,我使用下面的代码: With MarginalData .Range(.Cells(2, 1), .Cells(13, .UsedRange.Columns.Count)).FormulaArray = pullFormula End With 我想要的 ,是这样的一个结果: 这就是当我在范围内的每个单元格中分别input数组公式时的样子。 但是我得到的是这样的: 第一个单元格中数组公式的输出在所有列中重复 – 它们都共享相同的输出。 我如何编程式分配数组公式,好像每个单元格都分开分配? 公式是: {= INDEX(!BatchResults,MATCH(TTID&CHAR(1)&ROW() – 1,BatchResultsTTIDS&CHAR(1)&BatchResultsLayers,0),MATCH(A $ 1,$ BatchTTIDData 1:$ 1,0))} 它必须作为数组公式进行匹配,因为它不是在单个列上进行匹配,而是在两个连接的列上进行匹配。 连接的列必须作为数组返回,因此公式必须作为数组公式input。 到目前为止,最简单的解决scheme是下面接受的答案的一个变种,如下所示: Const pullFormula = "=INDEX(BatchResults,MATCH(TTID&CHAR(1)&ROW()-1,BatchResultsTTIDS&CHAR(1)&BatchResultsLayers,0),MATCH(A$1,BatchTTIDData!$1:$1,0))" With wrksht With .Range(.Cells(2, 1), .Cells(13, .UsedRange.Columns.Count)) .Formula = pullFormula .FormulaArray = .FormulaR1C1 End With End With

运行存储过程并从VBA返回值

我想将parameter passing到SQL Server 2008中的存储过程,我想将结果存储在一个ADODB.Recordset 目前我有这个: Public Sub UpdateWithStoredProcedure() Dim cmd As New ADODB.Command Dim conn As ADODB.Connection Dim prm As ADODB.Parameter Dim strConn As String Dim strSQL As String strConn = "Provider=SQLOLEDB.1;" & _ "Data Source=(local); Initial Catalog=NorthWind;" & _ "Integrated Security=SSPI" Set conn = New ADODB.Connection conn.Open strConn Set cmd = New ADODB.Command cmd.CommandText […]

如何从MacOS上的Excel中从HTTP端点检索JSON并parsing它?

我见过如何使用VBA从Excel发送HTTP POST请求到服务器? 以及介绍如何使用QueryTable从HTTP端点检索数据的MacOS友好响应 。 它演示了如何检索单个string并将其填充到单元格中。 都好。 现在我想检索一个以上的值。 这是一个很大的JSONstring,我想在填充一个或多个单元格之前在Excel VBA中进行后续处理。 这怎么可能? 我可以想到一种方法 – 将QueryTables的结果放入一个隐藏的单元格,然后后处理隐藏的单元格以填充其他单元格。 有几个VBA的JSON库,我还没有评估。 但是,这似乎很hacky。 真的,我不想依赖将JSON作为值存储在单元格中。 我想只将它存储到我的VBA代码中的一个variables。 就像我使用CreateObject(“MSXML2.ServerXMLHTTP”)一样。 ( NB:CreateObject()在MacOS上的Excel中不可用 )。 而且我明白这里最好的答案可能是: 如果你想在Excel中运行应用程序,可以获取一台Windows机器。

Vba检查是否在单元格中部分粗体

我从工作表中的文本列表生成XML,但我不知道如何检查当前单元格是否有一个粗体的单词。 我需要做的是检查列A中的每个单元格,将文本读入一个string,如果我点击任何粗体字添加 在它周围的标签。 我知道你可以按字符读取单元格内容,但不能格式化。 任何帮助将不胜感激!

如何将VBA集合写入Excel工作表

我有一些现有的代码,我正在修改。 此代码从预先存在的工作表中创build一个行集合。 它创build了一个大型的二维集合,每列都有独特的信息。 有一个单独的类模块为每个列声明数据types。 该代码通过循环遍历每个项目,将2D集合写入新的工作表。 我从来没有使用过一个集合,并希望一次性将集合写入表单。 当表有很多logging时,当前代码需要相当长的时间。 有没有办法将整个集合转换成二维数组,或者让我可以一次写入二维数组? 还是有办法将整个集合写入表单,就像使用二维数组一样? 我试图寻找这个,迄今为止不成功。 任何一般的观点,将不胜感激! 下面是一些示例代码,用粗体注释来说明如何使用集合。 定义类模块,命名为TableEntry Public Item1 As String Public Item2 As String Public Item3 As String Public Item4 As Integer Public Item5 As Integer 主要例程 – 创build集合,填充集合,将集合写入表单 Sub MainRoutine() Dim table As Collection Set table = New Collection Call FillCollection(File As String, ByRef table As Collection) […]

Excel VBA – 获取工作表的父窗口

我有一个从模板中插入一个标题,并冻结活动工作表的第一行,它被写为, Sub HeaderInsert(headerTemplate As Worksheet) headerTemplate.Rows("1:1").Copy ActiveSheet.Rows("1:1").Select ActiveSheet.Paste With ActiveWindow .SplitColumn = 0 .SplitRow = 1 .FreezePanes = True End With End Sub 我想把它变成一个函数,通过表单插入标题。 所以这会写, Function HeaderInsert(headerTemplate As Worksheet, contentSheet as Worksheet) ActiveSheet成为contentSheet ,但我怎样才能获得contentSheet的Window ? 也是一个更好的方法来做这个复制和粘贴?

matrixmath与VBA(线性方程组)

我正在寻找一些在Excel的VBA中执行一些matrixmath的帮助。 我读了大量的build议使用Excel工作表的答复,但我希望在VBA代码本身内解决这个问题。 尽pipe我的应用程序要大得多,假设我有一个我需要解决的线性方程组: x1 + x2 = 8 2*x1 + 4*x2 = 100 这可以用简单的matrix公式A * x = B或x = A ^( – 1)* B来解决, A = [1, 1; 2, 4] B = [8; 100] 如果你解决这个问题,你会发现x1 = -34和x2 = 42。就matrix而言,则: X = [-34; 42] 使用Excel的工作表以及它的MMULT和MINVERSE函数使得这一切变得简单,我已经得到了它的工作。 我的问题是我需要做一个VBA函数内的这个计算。 这就是我想要的: Dim A(0 To 1, 0 To 1) As Single […]