Excel宏 - 基于单元格值(除以数字)拆分ROW [英] Excel Macros - Splitting of the ROW based on the Cell Value (divided by the number)

查看:127
本文介绍了Excel宏 - 基于单元格值(除以数字)拆分ROW的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,

 

我想知道你是否可以帮我创建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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆