问题描述
我想做的是使用循环,匹配和偏移量来构建复制和粘贴宏。
基本上在“更新”表中。
我有一个表,用户可以在其中更新值
DB::transaction(function () use($user) { $user->delete(); });
我需要此宏执行以下操作。
- 搜索Sheet2(Table1 [PrimaryKey])并根据单元格A2值进行匹配
- 在工作表1中的C2中复制值(例如ABCD)
- Lx中的Paste.Value(其中x =在步骤1中找到的行ID)
- 在工作表1中复制CD中的值(例如1234)
- Ox中的Paste.Value(其中x =在步骤1中找到的行ID)
- 将今天粘贴在Wx中
- 对列E = 1的所有单元格进行循环
这是我找到的代码,但是我可以弄清楚循环和匹配组件
A B C D E
1 PrimaryKey Line New Value 1 New Value 2 UpdateValue
2 XY.1 1 ABCD 1234 1
3 XY.2 2 ZXCV 9876 1
4
希望这很清楚。
欢呼
解决方法
我不确定我是否理解您的问题,但是我尝试重建您的表。因此,我将第一张工作表命名为“ Sheet1”,将问题中的表格复制到A1-E3中,将第二张工作表命名为“ Sheet2”,并在A1-A2中分别写入“ XY.1”和“ XY.2”。
也许以下宏会为您提供帮助。它接受表中写入的值(在“ Sheet1”上),转到“ Sheet2”,在第一列中搜索一个值,然后将其他内容写入L,O和W列。但是我不知道该怎么做与表格B列中的值!?
Sub NameYourMacro()
Dim i As Integer
Dim strTheRow As String
Dim strNewValue1 As String
Dim strNewValue2 As String
Dim rngFoundCell As Range
i = 2 'First row on Sheet1 with values is row 2
While Cells(i,1).Value <> "" 'while there is a value in column A
If Cells(i,5).Value = 1 Then 'if value in column E is 1 then to things
'Read Values:
strTheRow = Cells(i,1).Value
strNewValue1 = Cells(i,3).Value
strNewValue2 = Cells(i,4).Value
'go to Sheet2 and search in the first column
Sheets("Sheet2").Activate
Set rngFoundCell = Columns(1).Find(strTheRow,xlValues,xlWhole)
If Not rngFoundCell Is Nothing Then 'if vba found the value in column 1
Sheets("Sheet2").Range("L" & rngFoundCell.Row).Value = strNewValue1
Sheets("Sheet2").Range("O" & rngFoundCell.Row).Value = strNewValue2
Sheets("Sheet2").Range("W" & rngFoundCell.Row).Value = Date
Else
'if rngFoundCell is nothing (value not found) do nothing
End If
Else
'if value in column E is not 1 do nothing
End If
'go back to Sheet1 and next row...
Sheets("Sheet1").Activate
i = i + 1
Wend
End Sub