我正在尝试创建某种数据库/站点地图,需要能够获取我已经知道的数据,并使用它来制作一个单元格的多个副本,并根据另一个单元格中的数字将某些内容附加到该单元格中。以下是我拥有的数据示例
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(这是解决一般编程问题的那个?)。他们肯定会有一个更高效、更有效的解决方案,而且不受百万条记录的限制。
希望任何需要做好类似、不那么令人担忧的工作的人都能接受这些提示,并发现它们对他们自己的任务有帮助。