Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.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 如果等于value,如何复制单元格,否则什么也不做?_Excel_Vba - Fatal编程技术网

Excel 如果等于value,如何复制单元格,否则什么也不做?

Excel 如果等于value,如何复制单元格,否则什么也不做?,excel,vba,Excel,Vba,我有一个数据集,用于格式化为 Row 1: 0/0 Row 2: 2/3 Row 3: 0/0 Row 4: 1/2 我创建了下面的以复制下面行中的值来替换“0/0” 但是,现在源文件不遵循预测格式(每两行数据用于一个帐户,以前所有前几行都是0/0,然后下一行是真值。) 现在更像是 Row 1: 1/3 Row 2: 0/0 Row 3: 0/0 Row 4: 3/4 因此,VBA不再能够始终如一地工作。每两行数据对应一个唯一的帐户。因此,本质上,我希望计算每个帐户中的第一行(两行),如果v

我有一个数据集,用于格式化为

Row 1: 0/0
Row 2: 2/3
Row 3: 0/0
Row 4: 1/2
我创建了下面的以复制下面行中的值来替换“0/0”

但是,现在源文件不遵循预测格式(每两行数据用于一个帐户,以前所有前几行都是0/0,然后下一行是真值。)

现在更像是

Row 1: 1/3
Row 2: 0/0
Row 3: 0/0
Row 4: 3/4
因此,VBA不再能够始终如一地工作。每两行数据对应一个唯一的帐户。因此,本质上,我希望计算每个帐户中的第一行(两行),如果value=“0/0”,则从下面复制单元格,但是,如果单元格值=除“0/0”以外的任何值,我不想执行任何操作,并保持值不变(1/4或任何值)

任何帮助都将不胜感激。

请尝试此代码

Sub SOIROM() 'this macro copies the SOI/ROM from the APR-DRG line and pastes it on the MS-DRG line
Dim lr As Long
Dim rcell As Range
Dim col As Range
Application.ScreenUpdating = False

lr = Cells(Rows.Count, 1).End(xlUp).Row
Set col = Range("M2:M" & lr)
For Each rcell In col
    'If rcell.Value = "0/0" Then
    If Application.WorksheetFunction.IsErr(rcell) Then
        rcell.Offset(1, 0).Copy rcell
    End If
Next
Application.ScreenUpdating = True 

如果只是查找非“0/0”的值,请删除偏移量并复制每个非“0/0”的单元格


那么,您现在期望得到什么结果呢?过去的情况是,具有实际值的行,我会将值(1/3等)复制到主行,然后删除具有实际值的行。因此,在最终产品中,整个列将包含真实结果(1/2、3/4等),而不是0/0。但是,由于源文件已更改,最后一列现在混合了0/0和实际值。我希望只返回实际值,不再返回0/0值。感谢您的回复,不幸的是,输出数据仍然包含大量“0/0”值。这是相同的代码,但您可以看到cell ISER是否像OP所请求的那样查找“0/0”。不确定这里的错误检查是什么。
Sub SOIROM() 'this macro copies the SOI/ROM from the APR-DRG line and pastes it on the MS-DRG line
Dim lr As Long
Dim rcell As Range
Dim col As Range
Application.ScreenUpdating = False

lr = Cells(Rows.Count, 1).End(xlUp).Row
Set col = Range("M2:M" & lr)
For Each rcell In col
    'If rcell.Value = "0/0" Then
    If Application.WorksheetFunction.IsErr(rcell) Then
        rcell.Offset(1, 0).Copy rcell
    End If
Next
Application.ScreenUpdating = True 
Sub SOIROM() 'this macro copies the SOI/ROM from the APR-DRG line and pastes it on the MS-DRG line
   Dim lr As Long
   Dim rcell As Range
   Dim col As Range

   Application.ScreenUpdating = False

   lr = Cells(Rows.Count, 6).End(xlUp).Row

   Set col = Range("M2:M" & lr)
   For Each rcell In col
      If rcell.Value = "0/0" Then
         #rcell.Offset(1, 0).Copy rcell
         rcell.Copy rcell
      End If
    Next

    Application.ScreenUpdating = True  
End Sub