如何在指定列范围内的所有单元格中添加字符串?

时间:2012-07-23 16:46:15

标签: c# excel range office-interop

我正在使用电子表格,基本上我想在之前保存的给定范围的末尾添加一些文本。我搜索了论坛,发现了似乎可以得到各种结果的各种技术。

我使用了以下代码:

foreach (Excel.Range row in MyGivenRange.Rows)
{
    Excel.Range cell = (Excel.Range)row.Cells[1, 1];
    cell.Value += "Add this text";
}         

这会将文本逐个添加到范围内的每个单元格的末尾,但是因为我的电子表格中有一个好的11k记录,这需要一段时间。我可以采取任何捷径吗?我已经尝试过allsorts作为复制和粘贴值。我可以快速在其旁边的列中粘贴一些文本然后合并以节省时间吗?

只是想知道你们是否有任何想法我能做什么..对我来说,搜索每一行可能效率很低。和以前一样,我发现使用范围的直接复制粘贴节省了我的时间。也许在给定的列或范围上使用insert可以直接调整每个实例?

1 个答案:

答案 0 :(得分:0)

这是vba,但转换为C#应该相当容易。

我是在回答你的问题时写的。使用testit更新大约16000个单元格,大约需要6秒钟。基本思想是将Excel公式复制到数组中,更新数组,然后将数组作为公式粘贴回Excel。

Sub testit()
appendTextToRange "A1:D4000", "hey there"
End Sub

Sub appendTextToRange(rngAddress As String, append As String)
Dim arr() As Variant, c As Variant
arr = Range(rngAddress).Formula
For x = LBound(arr, 1) To UBound(arr, 1)
    For y = LBound(arr, 2) To UBound(arr, 2)
        Debug.Print arr(x, y)
        If arr(x, y) = "" Then
            arr(x, y) = append
        ElseIf Left(arr(x, y), 1) = "=" Then
            arr(x, y) = arr(x, y) & " & "" " & append & """"
        Else
            arr(x, y) = arr(x, y) & " " & append
        End If
    Next
Next
Range(rngAddress).Formula = arr
End Sub

警告:如果您使用此更新用于计算的任何字段,则会中断计算。