插入数组公式到Excel中使用VBA和引用从Outlook电子邮件导出的单元格值?

我在Outlook中使用vba代码将一些电子邮件正文中的文本导出到Excel中的下一个可用行中。 我也在隔壁的单元格中导出一个数组公式,所以在这个例子中,intRow4作为整数表示我的工作表中下一个可用的行。

在这个例子中,我下一个可用的行是第34行。因此,我们将描述文本从我们的电子邮件导出到excel中的单元格(D34),并且还将一个数组公式从excel插入到单元格(E34)中。 该公式是引用D34的索引查找公式,应查找单词的前5个字母,并将其与另一个工作表中的3个字母的代码进行匹配。

所以在我的其他工作表(工作表2)我有列中的数据列表

Description Other Other Other Other Code Hotels NFP Catering PLQ Travel LMC 

所以在我的电子邮件中包含像Catering这样的描述文本的情况下,这将被导出到我的Excel单元格(D34),插入到(E34)中的公式应该通过引用单元格(D34)find相应的描述并将其与我在表2中的列。然后这应该在第6列产生3字母代码。在这种情况下,它将是PLQ

我的电子邮件中的我的说明文字如下所示

 Description of Provisional Supplier: Catering 

我的出口代码似乎工作正常,细胞D34填充我的电子邮件的描述文字。 公式在单元格E34中作为数组插入。

问题是我的公式不生产3字母代码,它显示#NUM! 错误。 但是,如果我进入我的单元格D34并将光标放在文本的左侧,然后按退格键并再次回车,则公式生成3个字母的代码。

我从描述string中删除空格和换行符,当它被导出到Excel中时,我无法解释为什么会发生这种情况。

有人可以告诉我哪里出错了,并告诉我如何我可以得到这个工作,而不必手动进入和编辑我的细胞的内容。 谢谢

 Const SHEET_NAME4 = "Statistics" intRow4 As Integer, _ Set excWks4 = excWkb.Worksheets(SHEET_NAME4) intRow4 = excWks4.UsedRange.Rows.Count + 1 Dim l As String l = excWks4.Cells(intRow4, 4).Address excWks4.Cells(intRow4, 5).FormulaArray = "=IF(ISERROR(INDEX('Up'!$A$1:$G$10004,SMALL(IF(LEFT('Up'!$B$1:$B$10004,5)=LEFT(" & l & ",5),ROW($B$1:$B$10004)),ROW(1:1)),6)),"""",INDEX('Up'!$A$1:$G$10004,SMALL(IF(LEFT('Up'!$B$1:$B$10004,5)=LEFT(" & l & ",5),ROW($B$1:$B$10004)),ROW(1:1)),6))" Dim b7 As String If TypeName(olkMsg) = "MailItem" Then b7 = olkMsg.Body Dim indexOfNameb4 As Integer indexOfNameb4 = InStr(UCase(b7), UCase("Description of the provisional Supplier:")) Dim indexOfNamec4 As Integer indexOfNamec4 = InStr(UCase(b7), UCase("Current Status: ")) Dim finalStringb4 As String Dim LResult3364 As String Dim LResult33644 As String finalStringb4 = Mid(b7, indexOfNameb4, indexOfNamec4 - indexOfNameb4) LResult3364 = Replace(finalStringb4, "Description of the provisional Supplier:", "") LResult33644 = Replace(LResult3364, Chr(10), "") Dim TrimString As String Dim TrimString2 As String Dim TrimString3 As String TrimString = Trim(LResult33644) TrimString3 = Replace(TrimString, " ", "") excWks4.Cells(intRow4, 4) = TrimString3 End If 

如果有帮助,我的Excel单元格格式化为一般格式

你有没有尝试添加线?

 excWks4.Cells(intRow4, 4) = Trim(excWks4.Cells(intRow4, 4)) 

之后

 l = excWks4.Cells(intRow4, 4).Address 

或者,您可能可以将TRIMfunction添加到围绕对这些单元格的所有引用的长公式中。