Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Excel 如何根据VBA中另一个工作表的条件,逐个更改工作表的特定值?_Excel_Vba - Fatal编程技术网

Excel 如何根据VBA中另一个工作表的条件,逐个更改工作表的特定值?

Excel 如何根据VBA中另一个工作表的条件,逐个更改工作表的特定值?,excel,vba,Excel,Vba,我想根据另一张名为“data”的工作表中的数据,将“breakdown”工作表中击穿电压列的值(无论何时为1E+17)更改为正确的值 条件是每当“数据”工作表中每列电流中的前电流/后电流或后电流/前电流>=1000时,我将记录其相应的电压,并在“击穿”工作表中替换不正确的数据 我的程序为“细分”工作表中突出显示的点提供0 图1(“数据”工作表) 之前(“细分”工作表) 我想要(“分解”工作表) 我的代码: Sub test() Dim correctvbd As Long Dim a A

我想根据另一张名为“data”的工作表中的数据,将“breakdown”工作表中击穿电压列的值(无论何时为1E+17)更改为正确的值

条件是每当“数据”工作表中每列电流中的前电流/后电流或后电流/前电流>=1000时,我将记录其相应的电压,并在“击穿”工作表中替换不正确的数据

我的程序为“细分”工作表中突出显示的点提供0

图1(“数据”工作表)

之前(“细分”工作表)

我想要(“分解”工作表)

我的代码:

Sub test()

Dim correctvbd As Long
Dim a As Long
Dim lastrow As Long
lastrow = Sheets("Breakdown").Range("C" & Sheets("Breakdown").Rows.Count).End(xlUp).Row

i = 2

starting = 3
j = starting ' STARTING POINT FOR READING voltage

Do While Sheets("data").Cells(j, i) <> ""         
                
    If Sheets("data").Cells(j, i) / Sheets("data").Cells(j - 1, i) >= 1000 Or _
      Sheets("data").Cells(j - 1, i) / Sheets("data").Cells(j, i) >= 1000 Then
        correctvbd = Sheets("data").Cells(j - 1, i - 1) 'record the point where correct Breakdown voltage is found
        Exit Do
                                                     
    Else
        j = j + 1 'continue to search for Breakdown voltage down the row for that column if it is not found yet
 
    End If
                             
    For a = 1 To lastrow                                                     
        If Sheets("Breakdown").Cells(a, 3).Value = 1E+17 Then
            Sheets("Breakdown").Cells(a, 3).Value = correctvbd
        End If      
    Next
Loop

' the upper five lens for sensor
i = i + 2 ' NEXT data point for next set of data data
j = starting 'Starting point for next set of voltage data

End Sub
子测试()
将VBD校正为长
暗淡如长
最后一排一样长
lastrow=工作表(“细分”).范围(“C”和工作表(“细分”).行.计数).结束(xlUp).行
i=2
启动=3
j=读取电压的起始点
“不要在工作表(“数据”)。单元格(j,i)””
如果图纸(“数据”)单元格(j,i)/图纸(“数据”)单元格(j-1,i)>=1000或_
表格(“数据”)。单元格(j-1,i)/表格(“数据”)。单元格(j,i)>=1000
correctvbd=表(“数据”)。电池(j-1,i-1)记录找到正确击穿电压的点
退出Do
其他的
j=j+1'如果尚未找到,则继续在该列的行下搜索击穿电压
如果结束
对于a=1到最后一行
如果表(“细分”)。单元格(a,3)。值=1E+17,则
表(“细分”)。单元格(a,3)。值=校正的VBD
如果结束
下一个
环
'传感器的上五个透镜
i=i+2'下一组数据的下一个数据点
j=下一组电压数据的起始点
端接头

我认为您的问题可能是,您正在定义correctvdb long:

Dim correctvbd As Long
可能是双倍的。 此外,我认为该行缺少结尾处的.value

correctvbd = Sheets("data").Cells(j - 1, i - 1)

我认为您的问题可能是,您正在定义VDB long:

Dim correctvbd As Long
可能是双倍的。 此外,我认为该行缺少结尾处的.value

correctvbd = Sheets("data").Cells(j - 1, i - 1)

对不起,还有问题。如果您必须更正某些内容:
correctvbd=Sheets(“data”).Cells(j-1,i-1).Value
。您的
exit do
跳过行
Sheets(“细分”)。单元格(a,3)。Value=correctedVBD
到循环中,因此不会写入任何值。抱歉,还有更多问题。如果您必须更正某些内容:
correctvbd=Sheets(“data”).Cells(j-1,i-1).Value
。您的
exit do
跳过行
Sheets(“细分”)。单元格(a,3)。Value=correctedvbd
到循环中,因此不会写入任何值。