首页 热点资讯 义务教育 高等教育 出国留学 考研考公

excel宏以固定条件自动填充

发布网友 发布时间:2022-04-25 23:08

我来回答

3个回答

热心网友 时间:2022-06-18 13:12

应该不难,我做一个试试,别忙采纳

追答:

在vba编辑器中插入模块,代码如下:


Sub b()
Set sh1 = Sheet1
Set sh2 = Sheet2
sh1.Range("a3:a65536").ClearContents
sh2.Range("a2:a65536").ClearContents

Dim i As Long
Dim j As Long
Dim ii As Long

Dim zjz As Variant '定义中间值,起始值,终止值,冠号
Dim qsz As Variant
Dim zzz As Variant
Dim gh As Variant
ii = 2
sh1.Select
For i = 3 To 65536
    For j = 2 To Range("iv" & i).End(xlToLeft).Column
    If Cells(i, 2) = "" Then
    Exit For
    End If
    
    zjz = Split(Cells(i, j), "-")
    gh = Split(zjz(0), "(")(0)
    qsz = Split(zjz(0), "(")(1)
    zzz = Split(zjz(1), ")")(0)
    Cells(i, 1) = zzz - qsz + 1 + Cells(i, 1)
    Do While qsz <= CLng(zzz)
    sh2.Cells(ii, 1) = "(" & gh & "-" & qsz & ")"
    qsz = qsz + 1
    ii = ii + 1
    Loop
    
    Next j
Next i
End Sub

效果如下(两个表,表名称默认,如果想改名字,需要改代码中的名字):

sheet1表样式(*区域为输入部分,总数量是自动计算的,测试过,吻合):

sheet2表样式:

此表只要不超过excel表*,可以做至少几千列数据

热心网友 时间:2022-06-18 13:12

条件到结果的位置如何确定?结果是两列么?

Option Explicit

Sub 按照A列数据进行填充()
 Dim S$, nB&, nC&, nS&, nE&, i&, j&, k&, Arr, l&, n&
 k = 0
 For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
  n = 0
  S = Cells(i, "A")
  nB = Val(Split(S, " ")(0))
  S = Split(S, " ")(1)
  Arr = Split(S, ")")
  For j = 0 To UBound(Arr) - 1
   nC = Val(Split(Arr(j), "(")(0))
   nS = Split(Split(Arr(j), "(")(1), "-")(0)
   nE = Split(Arr(j), "-")(1)
   For l = nS To nE
    k = k + 1: n = n + 1
    Cells(k, "B") = n: Cells(k, "C") = "'" & nC & "-" & l
   Next l
  Next j
  If n <> nB Then MsgBox "Err at " & i
 Next i
End Sub

热心网友 时间:2022-06-18 13:13

要用代码解决,你这条件没写好,不规范

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com