Excel VBA复制和操作值并将结果保留在同一工作表上?

时间:2014-02-19 03:08:27

标签: excel vba

这是我的问题:

每天我都会收到一张行数可变的excel表格。有些天它是100行,其他日子它是50行,但总是,列包含12列中相同类型的数据。

我将结果(在2个空行之后)粘贴到原始数据下方,然后我处理工作表中的列以修改一些数据并在之前发送。

这是一个包含3行,每行4列的示例表:

1001 100 1 100
1002 100 2 200
1003 101 1 300

我需要得出一个结果,其中第一列中的项目增加500,第二列中的项目增加50,第三列中的项目只是复制,第四列中的项目是递增10 ....依此类推12列。结果是在两行空行后粘贴...所以最终结果看起来像这样:

1001 100 1 100
1002 100 2 200
1003 101 1 300
(空行1)
(空行2)
1501 150 1 110
1502 150 2 210
1503 151 1 310

正如您所看到的......某些列“按原样”粘贴在原始数据下方,其他列根据原始值进行更改并应用计算。问题是我不知道原始列表每天包含多少行,并且由于源行数未知,我尝试使用公式来解决此问题仍然失败。

我知道如果我使用Visual Basic循环,我可以在单元格中插入公式,使表格符合我的要求,但我不知道从哪里开始。以前有人见过这样的事吗?我不想使用excel公式,因为我的工作表大小是可变的,有时需要一些逻辑来整理。 (我不能只将excel公式复制并粘贴到每一行,我需要在函数中使用逻辑来计算当天发生的事情)

谢谢大家,你在这里是一个很棒的社区!

杰米

1 个答案:

答案 0 :(得分:0)

我希望你是VBA的新手。下面的代码满足您的第一个条件(第一列增加500)

Sub test()
Dim erange As Range
Dim lrow As Integer

With ActiveSheet
lrow = .Range("A" & Rows.Count).End(xlUp).Row

For Each erange In .Range("A1:A" & lrow)

erange.Offset(lrow + 2, 0).Value = erange.Value + 500

Next erange


End With



End Sub

你应该尝试编码休息..如果你发现任何困难我知道

第2节

如果你想用其他字符串替换特定字符串,那么你可以使用替换函数。下面是示例

erange.Offset(lrow + 2, 0).Value = Replace(erange.Value, "_incomplete", "_processing")