在 Excel 中,是否可以使用一个单元格中的数字在第三个单元格中制作来自另一个单元格的那么多份数据副本?

在 Excel 中,是否可以使用一个单元格中的数字在第三个单元格中制作来自另一个单元格的那么多份数据副本?

我正在尝试创建某种数据库/站点地图,需要能够获取我已经知道的数据,并使用它来制作一个单元格的多个副本,并根据另一个单元格中的数字将某些内容附加到该单元格中。以下是我拥有的数据示例

26      example.com/search?find_loc=St.+John's+Newfoundland

我需要做的是获取 URL,并基于我们有 26 页的事实,通过在每个 URL(第一个 URL 除外)后附加页码来创建 26 个页面 URL,如下例中第三行所示。

制作这个:

example.com/search?find_loc=St.+John's+Newfoundland
example.com/search?find_loc=St.+John's+Newfoundland&start=10
example.com/search?find_loc=St.+John's+Newfoundland&start=20
example.com/search?find_loc=St.+John's+Newfoundland&start=30
example.com/search?find_loc=St.+John's+Newfoundland&start=40
example.com/search?find_loc=St.+John's+Newfoundland&start=50
example.com/search?find_loc=St.+John's+Newfoundland&start=60
example.com/search?find_loc=St.+John's+Newfoundland&start=70
example.com/search?find_loc=St.+John's+Newfoundland&start=80
example.com/search?find_loc=St.+John's+Newfoundland&start=90
example.com/search?find_loc=St.+John's+Newfoundland&start=100
example.com/search?find_loc=St.+John's+Newfoundland&start=110
example.com/search?find_loc=St.+John's+Newfoundland&start=120
example.com/search?find_loc=St.+John's+Newfoundland&start=130
example.com/search?find_loc=St.+John's+Newfoundland&start=140
example.com/search?find_loc=St.+John's+Newfoundland&start=150
example.com/search?find_loc=St.+John's+Newfoundland&start=160
example.com/search?find_loc=St.+John's+Newfoundland&start=170
example.com/search?find_loc=St.+John's+Newfoundland&start=180
example.com/search?find_loc=St.+John's+Newfoundland&start=190
example.com/search?find_loc=St.+John's+Newfoundland&start=200
example.com/search?find_loc=St.+John's+Newfoundland&start=210
example.com/search?find_loc=St.+John's+Newfoundland&start=220
example.com/search?find_loc=St.+John's+Newfoundland&start=230
example.com/search?find_loc=St.+John's+Newfoundland&start=240
example.com/search?find_loc=St.+John's+Newfoundland&start=250

答案1

我可能会使用 连接数字&。考虑一下:A1 = 网址的开头(example.com/search?find_loc=St.+John's+Newfoundland&start=)B1 = 网址的结尾(example.com/search?)从 A2 开始,列出您需要的所有数字(10、20、30 等。拖动小公式手柄以复制它们)。通过此设置,您可以在 B2 中使用以下公式,然后拖动填充手柄将其一直复制下去。

=$A$1 & A2 & $B$1

如果需要可点击的超链接,请在HYPERLINK复制之前将 B2 公式包装在 a 中。

=HYPERLINK($A$1 & A2 & $B$1)

答案2

代码块对易读性有一定帮助。

example.com/search?find_loc=St.+John's+Newfoundland 
example.com/search?find_loc=St.+John's+Newfoundland&start=10

...

example.com/search?find_loc=St.+John's+Newfoundland&start=240 
example.com/search?find_loc=St.+John's+Newfoundland&start=250

我会使用 =CONCATENATE() 函数。

在单元格 A1 或您正在使用的任何单元格中,放置:

example.com/search?find_loc=St.+John's+Newfoundland 

在单元格 B1 中:

&start=

在 C 列中,用 10..250 的范围填充该列。然后连接 D 列中的行:

=CONCATENATE($A$1, $B$1, $C1)

将该公式复制到列中,您应该能够相当轻松地显示数据。

答案3

这是我对您的问题的评论中的方法的实现。单元格 A2 包含您要生成的所有 URL 所共有的基本前缀。单元格 B2、B3、B4、... 是您要生成的位置。C2、C3、C4、... 是要为每个位置生成的字符串数量。

每个位置将在其自己的列中生成。E1 中的公式为:

=IF(ROW()=1,$A$2&$B$2,IF(ROW()<=$C$2,$A$2&$B$2&"&start="&(ROW()-1)*10,""))

E2:

=IF(ROW()=1,$A$2&$B$3,IF(ROW()<=$C$3,$A$2&$B$3&"&start="&(ROW()-1)*10,""))

E3:

=IF(ROW()=1,$A$2&$B$4,IF(ROW()<=$C$4,$A$2&$B$4&"&start="&(ROW()-1)*10,""))

“B”和“C”单元格每次向下移动一个单元格。继续向右移动,然后向下填充公式。

如果您有数百个位置,但不想编辑每个公式,请告诉我。整个过程可以用一个公式完成,但这需要使用 INDIRECT(),我尽量避免使用 INDIRECT()。它是易失性函数之一,因此必须谨慎使用。

在此处输入图片描述

答案4

哪个网站需要一张包含 65,000 多个基本 URL 的地图,每个 URL 可能都有 26 种变体?

我无法清楚地直接回答这个问题,但我想指出,可以通过有趣地使用自定义格式字符串来处理这些变化\&\s\t\a\r\t\=0;;,并且任何非临时的 Excel 用户至少使用过几次的函数都可以处理有问题的值,因为基本 URL 是唯一的,或者很明显它们已经被包含在海报列表中的第一个实例中。

该函数还可以(我与 一起想象INDEX/MATCH)确定何时使用以下 URL 开始列表。

由于乘法建议指向几百万行,而系统加载可能要求分批进行工作……我建议分批进行工作。可能有人有使用 Power Query 的经验,可以将该方法转换为可以在其中很好地运行的方法,尽管有人说在大约 500,000 条记录之后会出现速度变慢的问题。

更让我不安的是,发帖者根本没有表明他做了什么工作,也没有特别熟悉 Excel。也许他应该直接问 Stack Overflow(这是解决一般编程问题的那个?)。他们肯定会有一个更高效、更有效的解决方案,而且不受百万条记录的限制。

希望任何需要做好类似、不那么令人担忧的工作的人都能接受这些提示,并发现它们对他们自己的任务有帮助。

相关内容