VBA代码不返回大于999的值

时间:2016-08-02 13:37:50

标签: excel vba excel-vba

我正在尝试让Excel返回地址,邮政编码等之间的行车距离。我已经使用Google API设置了一切,但我根本不熟悉VBA,所以我不是确定这段代码有什么问题。

每当2点之间的距离大于999英里时,代码将仅返回第一个数字。因此,如果它是1,284英里,它只返回1.如果它是2,817英里,它只返回2,依此类推。如果有人能看到它并告诉我我错过了什么,或者我做错了什么,那么我正在运行的代码就在下面。

就这样我尽可能透明,我自己也没有写任何这些。我从一个名为analystcave.com的网站上得到了它,之前我已经在那里发布了这个问题,而我收到的唯一回复并没有解决问题。我再次发布,但我认为StackOverflow是一个更好的地方找到正确的答案,而且更快。

提前感谢您的帮助!

Seq Scan on entities  (cost=16.88..4776.15 rows=80414 width=163) (actual time=15.169..15.169 rows=0 loops=1)
   Filter: ((hashed SubPlan 1) OR (hashed SubPlan 2))
   Rows Removed by Filter: 107218
   SubPlan 1
     ->  Index Scan using index_users_email_key_idx1 on index_users_email  (cost=0.42..8.44 rows=1 width=33) (actual time=0.039..0.039 rows=0 loops=1)
           Index Cond: ((key)::text = 'test'::text)
   SubPlan 2
     ->  Index Scan using index_users_profile_name_key_idx1 on index_users_profile_name  (cost=0.42..8.44 rows=1 width=33) (actual time=0.071..0.071 rows=0 loops=1)
           Index Cond: ((key)::text = 'test'::text)
 Planning time: 0.202 ms
 Execution time: 15.216 ms

1 个答案:

答案 0 :(得分:0)

如果您查看请求返回的内容(使用输入“洛杉矶,CA 90001”,“纽约,纽约10001”),问题就相当明显了:

     "elements" : [
        {
           "distance" : {
              "text" : "2 796 mil",
              "value" : 4499875
           },
           "duration" : {
              "text" : "1 dzien 16 godz.",
              "value" : 144859
           },
           "status" : "OK"
        }
     ]

请注意,您在此处请求具有波兰语本地化的文本(语言= pl ):

lastVal = "&mode=car&language=pl&units=imperial&sensor=false"

这是使用千位分隔符的空格本地化距离文本。请注意,“值”已本地化(并以米为单位) - 当给定language=en本地化时,它会给出此值units=metric

     "elements" : [
        {
           "distance" : {
              "text" : "4,500 km",
              "value" : 4499875
           },
           "duration" : {
              "text" : "1 day 16 hours",
              "value" : 144859
           },
           "status" : "OK"
        }
     ]

快速解决方法是将注释中提到的正则表达式模式更改为...

regex.Pattern = """text"".*?([0-9,]+)" 

...以及请求:

lastVal = "&mode=car&language=en&units=imperial&sensor=false"

虽然我实际上建议拉出非本地化的“值”而不是本地化的“文本”,然后如果需要英制单位则转换为英里。