gpt4 book ai didi

excel - 条件移动循环 - VBA excel

转载 作者:行者123 更新时间:2023-12-04 20:08:00 25 4
gpt4 key购买 nike

我刚学会在excel中使用VBA,我有一个如图所示的电子表格,
enter image description here
我有来自 B1:B12 的列包含要搜索和移动的内容,我想构建代码来搜索将 C13:AD31 范围内的字符移动到 C1:AD12 范围内的同一行。
例如,在区域C13:AD31中,有一个子区域E14:J14包含内容“Vn”,与B2相同,然后将E14:J14移动(剪切+粘贴)到E2:J2,继续循环直到移动了区域 C13:AD31 中的所有字符(换句话说,A13:AD31 只留下了所有空单元格)。我想要的循环将返回如下所示的结果。
enter image description here
------a-----++++
(2022 年 3 月 31 日更新)
谢谢 VBasic2008 你的代码太棒了,
很抱歉再次打扰您,确实我无法理解您代码中的每一个内容,所以我仍然无法自定义代码以适应我生成的数据。目前我的 excel 表已经生成了 169 行。
这次我有来自 B40:B51 和 B127:B138 的列,其中包含要搜索和移动的内容。
enter image description here

B40栏截图:B51
enter image description here
我想要的循环将返回如下所示的结果。
enter image description here

最佳答案

更新缺失数据

Option Explicit

Sub UpdateData()

Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim ws As Worksheet: Set ws = wb.Worksheets("Sheet1")
Dim rg As Range
With ThisWorkbook.Worksheets("Sheet1").UsedRange
Set rg = .Resize(, .Columns.Count - 1).Offset(, 1)
End With

Dim cell As Range
Set cell = rg.Columns(1).Find("*", , xlValues, , , xlPrevious)
Dim drCount As Long: drCount = cell.Row - rg.Row + 1
Dim cCount As Long: cCount = rg.Columns.Count - 1

Dim lrg As Range: Set lrg = rg.Cells(1).Resize(drCount) ' Lookup
Dim drg As Range: Set drg = lrg.Resize(, cCount).Offset(, 1) ' Destination

' Source
Dim srCount As Long: srCount = rg.Row + rg.Rows.Count - cell.Row - 1
Dim srg As Range: Set srg = rg.Resize(srCount, cCount).Offset(drCount, 1)

Debug.Print lrg.Address, drg.Address, srg.Address, cCount

Application.ScreenUpdating = False

Dim srrg As Range
Dim sValue As Variant
Dim drIndex As Variant
Dim c As Long

For Each srrg In srg.Rows
If Application.CountBlank(srrg) < cCount Then
For c = 1 To cCount
sValue = srrg.Cells(c).Value
If Not IsError(sValue) Then
If Len(sValue) > 0 Then
drIndex = Application.Match(sValue, lrg, 0)
If IsNumeric(drIndex) Then
srrg.Cells(c).Copy drg.Cells(drIndex, c)
End If
End If
End If
Next c
End If
Next srrg

Application.ScreenUpdating = True

MsgBox "Data updated.", vbInformation

End Sub

关于excel - 条件移动循环 - VBA excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71624945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com