Excel数据导出修复数字错误/删除绿色三角形

使用第三方组件导出数据后,Excel工作表中的数据输入不正确。 Excel认为某些值是字符串,而它们是数字,并显示一个小的绿色三角形。

我们编写了以下代码来解决这个问题:

For Each objCell As Microsoft.Office.Interop.Excel.Range In objWorkSheetReport.Range(objWorkSheetReport.Cells(1, 1), objWorkSheetReport.Cells(Me.RowCount + 10, Columns.Count + 10)).Cells
    If IsNumeric(objCell.Value) Then
        objCell.Value = CDbl(objCell.Value)
    End If
Next

这删除了所有那些小的绿色三角形,但实际上很慢。

问题

是否有更快的方法快速转换数据范围,以便绿色三角形不显示?

4

1 答案

使用范围的 .SpecialCells()方法将其缩小到仅需要更改的单元格。

假设范围 NarrowedRange 和工作表 Sheet (用 A1:A8objWorksheetReport 代替你自己的范围片)

NarrowedRange = 
    Sheet.Range("A1:A8").SpecialCells(Excel.XlCellType.xlCellTypeConstants,
                                      Excel.XlSpecialCellsValue.xlTextValues)

将只为您提供原始范围的文本值元素,因此只需相应地更改它们。

4
额外
@Coding你在做手术时是否打开了纸张?如果你让发动机在后台完成工作,它会加快速度。如果必须打开它,请关闭 ScreenUpdating 。你有几行?我认为 SpecialCells 会加快它的速度,所以我希望它表现得更好。所有其他方法都失败了,在程序员上就优化这些类型的操作设置了一个问题。
额外 作者 jonsca,
这仍然是一个非常缓慢的操作。有没有办法加快速度?
额外 作者 CodingBarfield,