如何在级联结构中订购Google电子表格中的网址列表?

问题描述 投票:2回答:1

假设我有一个这样的网址列表:

https://moz.com/
https://moz.com/about
https://moz.com/about/contact
https://moz.com/about/jobs
https://moz.com/beginners-guide-to-seo
https://moz.com/blog
https://moz.com/blog/category/advanced-seo
https://moz.com/blog/advanced-seo/technical
https://moz.com/blog/advanced-seo/content
https://moz.com/blog/googles-walled-garden
https://moz.com/blog/local-search-ranking-factors-survey-results-2017
https://moz.com/explorer
https://moz.com/help
https://moz.com/help/guides
https://moz.com/help/guides/moz-pro-overview

我希望它根据结构的深度显示在不同的列中。就像URL的每个部分都是站点层次结构中的级别一样,我想要将层次结构可视化为:

https://moz.com/
    https://moz.com/about   
        https://moz.com/about/contact
        https://moz.com/about/jobs
    https://moz.com/beginners-guide-to-seo
    https://moz.com/blog
        https://moz.com/blog/advanced-seo
            https://moz.com/blog/advanced-seo/technical
            https://moz.com/blog/advanced-seo/content
        https://moz.com/blog/googles-walled-garden
        https://moz.com/blog/local-search-ranking-factors-survey-results-2017
    https://moz.com/explorer
    https://moz.com/help
        https://moz.com/help/guides
        https://moz.com/help/guides/moz-pro-overview

我怎样才能做到这一点?我已经尝试过使用split函数,但这不起作用,因为它只是将URL的不同部分拆分为不同的列,而不是将整个URL拆分为一致的列。

提前致谢 :)

url google-sheets
1个回答
3
投票

假设链接的范围是A:A

  1. 将公式=ArrayFormula(COUNTIF(REGEXMATCH(A2,$A$1:A1), true))*1放入B2并将其向下拖动
  2. 将公式=REPT(" ",B1)&A1放入C1并将其向下拖动。

enter image description here

EDIT1

这是执行相同操作的单一公式:

=ARRAYFORMULA(rept(" ",MMULT( --(REGEXMATCH(A1:A15,TRANSPOSE(OFFSET(A1:A15,1,)))),SIGN(A1:A15<>""))-1)&A1:A15)

Aaditi

这是一个很棒的解决方案,非常感谢你。然而,似乎我遇到了最后包含.html的网站的问题(moz.com/about.html但是moz.com/about/contact.html等等)。任何想法如何绕过这个?

=ARRAYFORMULA(rept(" ",MMULT(--(REGEXMATCH(A1:A15,REGEXREPLACE(TRANSPOSE(OFFSET(A1:A15,1,)),"\.html$",""))), SIGN(A1:A15<>""))-1)&A1:A15)

笔记:

  • 该公式还替换了字符串末尾的“.html”。
© www.soinside.com 2019 - 2024. All rights reserved.