我已经构建了以下用于使用google的地方api获取电话号码的小程序,但它很慢.当我用6个项目进行测试时,它需要从4.86秒到1.99秒,我不确定为什么会发生重大变化.我对API很新,所以我甚至不确定哪些事情可以/不能加速,哪些事情留给服务于API的网络服务器以及我可以改变自己.
import requests,json,time
searchTerms = input("input places separated by comma")
start_time = time.time() #timer
searchTerms = searchTerms.split(',')
for i in searchTerms:
r1 = requests.get('https://maps.googleapis.com/maps/api/place/textsearch/json?query='+ i +'&key=MY_KEY')
a = r1.json()
pid = a['results'][0]['place_id']
r2 = requests.get('https://maps.googleapis.com/maps/api/place/details/json?placeid='+pid+'&key=MY_KEY')
b = r2.json()
phone = b['result']['formatted_phone_number']
name = b['result']['name']
website = b['result']['website']
print(phone+' '+name+' '+website)
print("--- %s seconds ---" % (time.time() - start_time))
Run Code Online (Sandbox Code Playgroud) 我想知道如何检测用户是否要删除内容或将内容插入范围。如果他们要删除范围,请说D14:D18。然后,我想执行一个宏,该宏还将删除E14:E18中的内容。如果他们要在D14:D18中输入内容,我只是不想删除E14:E18。
我试过了:
If Selection.ClearContents Then
MsgBox Target.Offset(0, 3).Style
End If
Run Code Online (Sandbox Code Playgroud)
但是,这让我陷入了无限循环。
更多上下文:
我有数百个单元D:D用于输入服务数量。并非D:D应该触摸所有内容。只有细胞D:D与.Style = "UnitInput"。在中,E:E我进行了数据验证,该数据验证仅允许用户输入contractor 1或。contractor 2 但是,当输入内容时,D:D我运行宏以将默认承包商(位于中F:F)分配给E:E。因此,当用户在其中输入数量时,D:D可以正确分配默认承包商。当他们从中删除单个项目时,D:D我会处理承包商的适当撤离。仅当他们从中删除一系列项目时D:D。
完整代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error GoTo ErrHandler:
If Selection.Rows.Count * Selection.Columns.Count = 1 Then
If Target.Offset(0, 3).Style = "Contractor" Then
If Target.Value < 1 Then
Target.Offset(0, 3).Value = ""
Else …Run Code Online (Sandbox Code Playgroud) 我已经习惯了Python语法在那里检查,如果7是list1你只需键入7 in list1它返回一个布尔值.我怎么能在vba中执行这样的操作?
我目前正在进行大范围的循环.我想偶尔检查一下我循环的值是否在不同的范围内.如果我不得不在循环中嵌入更多循环,这可能会慢得多.解决这个问题的最快方法是什么?
For i = 400 To 1 Step -1:
'doing other things
'here's some psuedo-code of what I want to do
If Sheets("Sheet2").Cells(i, 2).Value In Sheets("Sheet1").Range("NamedRange")
Sheets("Sheet2").Cells(i, 2).EntireRow.Delete
End If
Next i
Run Code Online (Sandbox Code Playgroud)