Ms office 使用VBA,如何选择行范围内的每一个其他单元格(要垂直复制和粘贴)?
我有一个2200多页的文本文件。它通过数据交换从客户处传递给我们,用星号分隔值,用波浪号(~)表示行尾。该文件在Word中作为文本文件发送给我。大多数行被分成两行(一行包括一整行和第二行的一部分)。我一次将其中的部分(10个页面块)传输到Excel中,不幸的是,在“文本到列”过程中,行末尾出现的任何零都会被丢弃。所以,我仔细观察每一个“长”行,以确保零没有丢失,并手动重新输入任何丢失的零 以下是一小部分示例数据:Ms office 使用VBA,如何选择行范围内的每一个其他单元格(要垂直复制和粘贴)?,ms-office,vba,parsing,Ms Office,Vba,Parsing,我有一个2200多页的文本文件。它通过数据交换从客户处传递给我们,用星号分隔值,用波浪号(~)表示行尾。该文件在Word中作为文本文件发送给我。大多数行被分成两行(一行包括一整行和第二行的一部分)。我一次将其中的部分(10个页面块)传输到Excel中,不幸的是,在“文本到列”过程中,行末尾出现的任何零都会被丢弃。所以,我仔细观察每一个“长”行,以确保零没有丢失,并手动重新输入任何丢失的零 以下是一小部分示例数据: SDQ EA 92 1551 378 1601 151 1603 157 1604
SDQ EA 92 1551 378 1601 151 1603 157 1604 83
“SDQ、EA和92”是不相关的(数据传输的伪影)。我想使用Excel和/或VBA选择1551、1601、1603和1604(这些是存储编号),这样我就可以复制这些值,并将它们垂直粘贴。然后我将返回并复制378、151、157和83(销售值),以便将它们转置粘贴到商店编号旁边。接下来的两行数据包含相同的存储编号,但给出了相应的美元值。我只需要复制美元值,以便将其垂直转置粘贴到单位值旁边(例如378、151、157和83)
只要能够将光标放在行中感兴趣的第一个单元格上并运行宏以复制其他单元格,我的工作就会大大加快。我尝试使用
ActiveCell
和Offset
引用来选择要复制的范围,但没有成功。对我有什么建议吗?提前感谢您的帮助。如果没有关于该文件的更多信息,很难给出完整的答案
我认为,如果您的输入数据长达2200多页,则不太可能使用默认的excel打开功能打开它。尤其是因为Excel的行数和列数最多。如果文件是文本文件(.txt),我建议用VBA打开它,读取每一行,一次读取一行,然后处理数据
下面是一个让您开始学习的示例。请记住,这是将每行文本转换为数据列,因此在运行2200页文本之前,您将很快填充excel的所有列。但这只是一个例子
Sub getData()
dFile = FreeFile
sFile = "c:\code\test.txt"
Open sFile For Input As #dFile
c = 1
'keep doing this until end of file
Do While Not EOF(dFile)
'read line into dataLine
Input #dFile, dataLine
' break up line into words based on spaces
j = Split(dataLine, " ")
jLength = UBound(j)
If jLength > 2 Then
r = 1
'ignore first 3 words
'and get every other word
'transpose rows of text into columns
For word = 3 To jLength Step 2
Cells(r, c) = j(word)
r = r + 1
Next word
End If
c = c + 1
Loop
Close #Data
End Sub
你能给出几行的确切格式吗?例如,您提到*和~,但没有在示例中显示它们。您可以编辑您的问题并将其添加到结尾。@Joe Internet说了些什么,另外,您可以将您的问题分成逻辑段落,以便更容易理解吗?我个人会让它留在这里,但我非常确定这应该是堆栈溢出。