Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date Google Sheets自动将字符串解析为日期…有时?_Date_Google Sheets_Google Sheets Formula - Fatal编程技术网

Date Google Sheets自动将字符串解析为日期…有时?

Date Google Sheets自动将字符串解析为日期…有时?,date,google-sheets,google-sheets-formula,Date,Google Sheets,Google Sheets Formula,我正在使用Google Sheets从Yahoo Finance的表格中获取股票数据。例如,要获取一家公司的市盈率,简单如下: =INDEX(IMPORTHTML("https://finance.yahoo.com/quote/DELL","table", 2),3,2) 然而,我在抓取收益日期时遇到了一个奇怪的行为。雅虎财经以两种可能的格式列出它们:如“2021年2月25日”或“2021年1月28日-2021年2月1日” 在第一种情况下,只需像上面一

我正在使用Google Sheets从Yahoo Finance的表格中获取股票数据。例如,要获取一家公司的市盈率,简单如下:

=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()
将被破坏。

在这两种情况下都使用你的
公式,在最后添加
*1
并将两种格式都设置为
date
,对于单个,一致的公式

KO
示例

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

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

在这两种情况下都使用您的
公式,在末尾添加
*1
,并将两种格式都设置为
日期
,以获得一个统一的公式

KO
示例

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

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

看来添加*1是修复它的关键,谢谢。非常奇怪的是,它在自动将某些字符串解析为日期而不是其他字符串方面的行为并不一致……但是*1修复了它并使其一致:)看起来添加*1是修复它的关键,谢谢。非常奇怪,它在自动将某些字符串解析为日期而不是其他字符串方面的行为并不一致……但是*1修复了它并使其一致:)