【问题标题】:Google Sheets Auto-Parses Strings To Dates...Sometimes?谷歌表格自动解析字符串到日期......有时?
【发布时间】:2020-12-20 08:22:40
【问题描述】:

我正在使用 Google 表格从雅虎财经的表格中抓取股票数据。例如,要获取一家公司的市盈率,很简单:

=INDEX(IMPORTHTML("https://finance.yahoo.com/quote/DELL","table", 2),3,2)

但是,我在获取收益日期时遇到了奇怪的行为。雅虎财经以两种可能的格式列出它们:如“2021 年 2 月 25 日”或“2021 年 1 月 28 日 - 2021 年 2 月 1 日”

在第一种情况下,只需像上面一样抓取单元格值:

=INDEX(IMPORTHTML("https://finance.yahoo.com/quote/DELL","table", 2),5,2)

在第二个中,获取单元格值然后解析出第一位:

=LEFT(INDEX(IMPORTHTML("https://finance.yahoo.com/quote/KO","table", 2),5,2),12)

现在的问题是:它与处理数据的方式不一致。在第一种情况下,它识别出字符串“看起来像”一个日期,并直接将其作为实际日期返回 - 就好像调用被包裹在 DATEVALUE() 中一样,但显然不是。在后一种情况下,它以字符串形式返回,因此您需要将其显式包装在 DATEVALUE() 中。

为什么它的行为不一致,将第一个字符串作为日期返回,而将第二个字符串作为字符串返回?这使得很难有一个公式可以同时处理这两种情况,因为如果您将已经是日期的东西传递给DATEVALUE()(即第一种情况),它就会中断。

【问题讨论】:

    标签: date google-sheets google-sheets-formula


    【解决方案1】:

    在这两种情况下都使用您的LEFT 公式,在末尾添加*1 并将两者格式化为Date,以获得单一、一致的公式。

    KO 示例

    =LEFT(INDEX(IMPORTHTML("https://finance.yahoo.com/quote/KO","table", 2),5,2),12)*1
    

    DELL 示例

    =LEFT(INDEX(IMPORTHTML("https://finance.yahoo.com/quote/DELL","table", 2),5,2),12)*1
    

    【讨论】:

    • 看起来添加 *1 是修复它的关键,谢谢。很奇怪,它在将某些字符串自动解析为日期而不是其他字符串方面表现不一致……但 *1 修复了它并使其保持一致:)
    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 2022-10-14
    • 2012-10-02
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多