Excel宏 - 基于单元格值(除以数字)拆分ROW [英] Excel Macros - Splitting of the ROW based on the Cell Value (divided by the number)
问题描述
您好,
我想知道你是否可以帮我创建Excel宏?我需要一个宏来根据单元格的值除以1000来创建额外的行。此外,源行中的所有信息都需要在
新创建的行中复制
S1单元格中的数字3000,必须除以1000.公式的商将等于新创建的ROW中的数量(3000 / 1000 = 3)。当时,来源ROW会将S1单元格中的信息/值更改为
1000 。
在这种情况下,当单元格S1将包含非全数,例如3560时,宏将信息拆分为4行,如下所示:
BEFORE:
POP
999
1234
ABC
1000
AABBCC
QOH
EA
300
0
3560
3560
X
998
AUFNAHME
AFTER:
POP
999
1234
ABC
1000
AABBCC
QOH
EA
300
0
1000
1000
X
998
AUFNAHME
POP
999
1234
ABC
1000
AABBCC
QOH
EA
300
0
1000
1000
X
998
AUFNAHME
POP
999
1234
ABC
1000
AABBCC
QOH
EA
300
0
1000
1000
X
998
AUFNAHME
POP
999
1234
ABC
1000
AABBCC
QOH
EA
300
0
560
560
X
998
AUFNAHME
*以黄色突出显示为源ROW。
示例中的列数等于我当前正在处理的文档中的列数。
感谢您的帮助。
推荐答案
您好Aloysius Mahesh,$
您需要计算需要添加的行数然后添加新行,您可以使用Range.Insert在工作表中添加行。
以下是示例。
Sub CopyToDown()
Dim sRng As Range
Set sRng = Selection.EntireRow'源行
amount = sRng.Range(" S1")'此行的S列中的值
rcount = WorksheetFunction.RoundUp(amount / 1000,0) - 需要添加1'行计数
如果rcount> 0然后
sRng.Range(" S1")= 1000
i = 1到rcount
sRng.Copy
sRng.Offset(i,0).Insert
sRng.Offset(i,0).PasteSpecial xlPasteAll
如果i = rcount则为
modNum =金额Mod 5
如果modNum> 0然后
sRng.Offset(i,0).Range(" S1")= modNum
否则
sRng.Offset(i,0).Range(" S1")= 1000
结束如果
否则
sRng.Offset(i,0).Range(" S1")= 1000
结束如果
下一步i
结束如果
Application.CutCopyMode = False
结束子¥ b $ b最好的问候,
Terry
Hi Aloysius Mahesh,
You need get count of the rows need to be added and then add new rows, you could use Range.Insert to add rows in worksheet.
Here is the example.
Sub CopyToDown()
Dim sRng As Range
Set sRng = Selection.EntireRow 'the source row
amount = sRng.Range("S1") 'the value in S column of this row
rcount = WorksheetFunction.RoundUp(amount / 1000, 0) - 1 'rows count need to be added
If rcount > 0 Then
sRng.Range("S1") = 1000
For i = 1 To rcount
sRng.Copy
sRng.Offset(i, 0).Insert
sRng.Offset(i, 0).PasteSpecial xlPasteAll
If i = rcount Then
modNum = amount Mod 5
If modNum > 0 Then
sRng.Offset(i, 0).Range("S1") = modNum
Else
sRng.Offset(i, 0).Range("S1") = 1000
End If
Else
sRng.Offset(i, 0).Range("S1") = 1000
End If
Next i
End If
Application.CutCopyMode = False
End Sub
Best Regards,
Terry
这篇关于Excel宏 - 基于单元格值(除以数字)拆分ROW的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!