0

对不起,如果这很难理解 - 我没有足够的业力来添加图片,所以我会尽我所能来描述这个!在 R 中使用 XLConnect 包读取和写入 Excel 电子表格。

我正在做一个项目,我试图从许多工作簿中取出数据列,并根据它们来自哪个工作簿(每个工作簿是连续工作日的数据)将它们连接到新工作簿的行中。问题是我寻求的数据只是每个工作簿/工作表的一小部分(10 行 X 3 列),并且由于代表最初创建的人的草率,并不总是位于工作表中的同一位置电子表格。(例如,我不能只从单元格 A2 开始,因为在一个工作簿中从 A2 开始的数据集可能从另一个工作簿中的 B12 或 C3 开始)。

我想知道是否可以根据其内容搜索单元格(例如,包含标题“套利价格表”的单元格)并返回索引或参考公式以便能够访问该单元格。

还想知道,一旦我根据其内容引用该单元格,是否有办法调整该公式以到达我知道另一个单元格与该单元格进行比较的位置。例如,如果具有已知内容的单元格始终位于我希望开始收集数据的单元格的上方 2 行和左侧 3 列,我是否可以采用第一个参考公式并将其增加 2 行和 3列来获取我想要的单元格的参考公式?

感谢您的帮助,如果您需要更多信息以便能够理解我的问题,请告诉我!

4

1 回答 1

0

您可以将整个工作表作为矩阵读取,例如

library(XLConnect)
demoExcelFile <- system.file("demoFiles/mtcars.xlsx", package = "XLConnect")
mm <- as.matrix(readWorksheetFromFile(demoExcelFile, sheet=1))
class(mm)<-"character" # convert all to character

然后您可以搜索值并获取行/列

 which(mm=="3.435", arr.ind=T)

#      row col
# [1,]  23   6

然后,您可以根据需要抵消这些值并从矩阵中提取值。最后,当您知道要从哪里读取时,可以使用以下命令转换为更干净的数据框

read.table(text=apply(mm[25:27, 6:8],1,paste, collapse="\t"), sep="\t")

希望这能让您对可以尝试的事情有一个大致的了解。如果不确切知道您的输入数据是什么样的,就很难更具体。

于 2014-06-12T00:25:34.027 回答