我在下面编写的代码用于替换工作表中的一些索引匹配公式。它似乎工作得很好,但我认为循环有点笨拙,可能容易出错。有人有什么改进建议吗?
Sub match_SIC_code_sheet_loop()
'sic code needs to match value in column j or a in sic code sheet, '
'if not available = met10 works, but probably needs a bit more
'debugging to make it robust.
Dim ws As Integer
Dim lastrow As Long
Dim lastrow_sic As Long
Dim output_wb As Workbook
Dim SIC_sheet As Worksheet
Dim Demand_CAT As String
Dim sic_DMA As String
Dim i As Integer
Dim row As Integer
Dim WS_count As Long
Dim x As String
Dim y As String
Set output_wb = Workbooks("DMA_customers_SICTEST.xlsx") 'use thisworkbook instead
Set SIC_sheet = Workbooks("DMA_metered_tool_v12_SICTEST.xlsm").Sheets("SIC codes")
With SIC_sheet 'count the number of SIC codes to search through
lastrow_sic = .Range("j" & .Rows.Count).End(xlUp).row
End With
With output_wb 'count the no. of sheets in the generated customer workbook
WS_count = output_wb.Worksheets.Count
End With
With output_wb
For ws = 1 To WS_count 'loop through each sheet in the customer workbook
With output_wb.Sheets(ws)
y = output_wb.Sheets(ws).Name
lastrow = .Range("a" & .Rows.Count).End(xlUp).row ' number of rows in the
'current customer sheet
For i = 2 To lastrow 'data starts in row 2; sic code in column 9
sic_DMA = .Cells(i, 9).Text 'the lookup value
With SIC_sheet
'SIC codes start in row 2, if the sic code matches,
'the correct demand category is appointed, if the sic code does not
'match, then MET_10 is given as the default value.
For row = 2 To lastrow_sic
x = .Cells(row, 3).Text
If x = sic_DMA Then
Demand_CAT = .Cells(row, 10).Text
Exit For
Else
Demand_CAT = "MET_10"
End If
Next row
output_wb.Sheets(ws).Cells(i, 23).Value = Demand_CAT
End With
Next i
End With
Next ws
End With
output_wb.Save
End Sub
谢谢
首先,您可以将这个长过程分成几个较小的方法。例如,您可以有一个ProcessSheet过程,您可以将下面的每个工作表传递给该过程:
For ws = 1 To WS_count 'loop through each sheet in the customer workbook
这肯定有助于可读性等。如果您仍然不满意,那么继续将循环分解成更小的逻辑过程。只是不要太疯狂。
除此之外,一些错误检查和值验证将在一个深度嵌套的循环中进行。例如,确保各种计算变量(如“lastrow”)正确或在有效阈值内等。
最后,不要像神奇的伪装调试仙女一样在你的长循环中散布硬编码值;相反,更喜欢一些有意义的命名为Const的变量替代方案,即。
Private Const SIC_START_ROW = 2
我正在尝试用Java编写一个函数,它接受两个数组,并对数组1中的索引值求和,其中的值与数组2匹配,例如。 数组1={15、6、99、12、35} 数组2={1,12,7,99,35} 匹配“Array1[索引]”值=2(99)、3(12)、4(35) 因此,返回9(2 3 4) 我建议使用以下方法进行此操作: 但是如果Array2中有一个不匹配的值,我也想返回-1。所以在上面的情况下,1和7不在A
本文向大家介绍MySQL ENUM列匹配引号值,包括了MySQL ENUM列匹配引号值的使用技巧和注意事项,需要的朋友参考一下 我们首先创建一个具有ENUM类型列的表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询,其中我们对引用的值进行计数,即插入“ 0”的记录- 这将产生以下输出-
问题内容: 关于数据库,我是一个相对新手。我们正在使用MySQL,而我目前正在尝试加速似乎需要一段时间才能运行的SQL语句。我四处寻找类似问题,但没有找到。 目的是删除表A中表B中具有匹配ID的所有行。 我目前正在执行以下操作: 表a中约有10万行,表b中有约22k行。列“ id”是两个表的PK。 在我的测试箱上运行此语句大约需要3分钟-Pentium D,XP SP3、2GB内存,MySQL 5
我有一个订单数据帧: 我有另一个唯一的菜单项数据帧,它有自己的特定ID: 现在我要匹配元素,并通过在orders数据帧中打印其chat_id来返回其ID
我已经尝试了所有的方法,最终我要求助于这个社区来解决这个谷歌表单公式。以下是一份示例表,以说明这种情况:https://docs.google.com/spreadsheets/d/1mLzsAyqtkASYMQsu8-igaUTURvhHiH-jXJN3qsr0mkU/edit?usp=sharing 每一行都是一个就诊的病人。有5个字段供患者提供电话号码(手机、家庭等)。)。在另一个标签(付费
问题内容: 我有两个numpy数组A和B。A包含唯一值,而B是A的子数组。 例如: 问题答案: 您可以使用带有- 如果您关心维护订单,也可以使用- 对于一般情况,当&是未排序的数组时,您可以在中引入选项,就像这样- 为了解决一般情况,我还会添加我最喜欢的内容- 样品运行-