gpt4 book ai didi

excel - 从变量表中复制数据

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

我一直在尝试做一份报告并创建一个宏来将数据从一个文件复制到另一个文件。

我无法弄清楚如何复制数据,因为我需要从中获取数据的表不同。

示例一:

Example one

我需要复制的是警报文本下方的内容。

但是在示例一中,我没有严重警报,但可能有文件。同样适用于主要/次要/警告。

警报文本下方的最大行数是 3,但我可以有 1/2/3 甚至没有。

Example 2

在示例 2 中,我没有数据。

Example 3

在这里,我在所有其他类别中有 2 个关键和 3 个。

我知道这可能是一个奇怪的问题,但我不知道如何找到这些值,因为它们可能变化很大。

感谢所有帮助

这是我的代码,但我错过了重要的部分,

          Sub Copy()



Dim wbOpen As Workbook
Dim wbMe As Workbook
Dim vals As Variant

Set wbMe = ThisWorkbook
Set wbOpen = Workbooks.Open("C:\XXX\Core")

'MSS

vals = wbOpen.Sheets("MSS02NZF").Range("A2:B260").Copy
wbMe.Sheets("MSS02NZF").Range("B5").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False


' wbOpen.Sheets(1).Range("A2:B260").Copy
' wbMe.Sheets(1).Range("B5").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'MME
vals = wbOpen.Sheets("MME01NZF").Range("A2:H260").Copy
wbMe.Sheets("MME01NZF").Range("B5").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False


'CSCF
vals = wbOpen.Sheets("CSCF").Range("A2:H2060").Copy
wbMe.Sheets("CSCF").Range("B5").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

最佳答案

根据自己的需要进行修改;代码使用 A:B 作为源代码,并将结果粘贴到 C:D 中。

Sub test()
Dim lrow As Long, alarmRow() As Long, alarmEnd() As Long
Dim count As Long, count2 As Long, rowcount As Long

ReDim alarmRow(1 To Application.CountIf(Range("A:A"), "Alarm"))
ReDim alarmEnd(1 To UBound(alarmRow))

With Worksheets("Sheet4") 'Change this to the Sheetname of your source.
lrow = .Cells(Rows.count, 1).End(xlUp).Row
For x = 1 To lrow Step 1
If .Range("A" & x).Value = "Alarm" Then 'Change "A" column to where your source data is.
count = count + 1
alarmRow(count) = x + 1
ElseIf .Range("A" & x).Value = "" Then 'Change "A" column to where your source data is.

count2 = count2 + 1
alarmEnd(count2) = x
End If
alarmEnd(UBound(alarmEnd)) = lrow
Next

For x = 1 To UBound(alarmRow) Step 1
lrow = .Cells(Rows.count, 3).End(xlUp).Row + 1
rowcount = alarmEnd(x) - alarmRow(x)
.Range("C" & lrow & ":D" & lrow + rowcount).Value = .Range("A" & alarmRow(x) & ":B" & alarmEnd(x)).Value ' Change A/B to where your source data is, and C/D to where you want to put the list.
Next
End With
End Sub

这有点乱,但它是这样工作的:
它将查看“警报”一词所在的列表。一旦找到它,单词所在的行号就会被注册到一个数组中。空白的行也被带到另一个数组中。这将作为复制数据时的范围。

关于excel - 从变量表中复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53548584/

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