Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops VBA函数遍历单元格,用相对列标题值替换单元格_Loops_Excel_Replace_Vba - Fatal编程技术网

Loops VBA函数遍历单元格,用相对列标题值替换单元格

Loops VBA函数遍历单元格,用相对列标题值替换单元格,loops,excel,replace,vba,Loops,Excel,Replace,Vba,我正在尝试将一个数据矩阵转换为一个新的标准,该标准应该适合特定的分析软件 初始矩阵如下所示: real char num 10 10 25 26 26 56 -------------------------------- state num 1 2 9 4 6 3 -------------------------------- name 1 0 0 1 1 0 1 name 2 1 0 0 0 0 0 name 3

我正在尝试将一个数据矩阵转换为一个新的标准,该标准应该适合特定的分析软件

初始矩阵如下所示:

real char num 10 10 25 26 26 56
--------------------------------
state num     1  2  9  4  6  3
--------------------------------
name 1        0  0  1  1  0  1
name 2        1  0  0  0  0  0
name 3        0  1  1  0  0  1
name 4        0  1  0  0  1  0
name 5        1  0  0  0  0  0
name 6        0  0  1  0  1  0
我一直在努力做到这一点:

real char num 10 10 25 26 26 56
--------------------------------
state num     1  2  9  4  6  3
--------------------------------
name 1        0  0  9  4  0  3
name 2        1  0  0  0  0  0
name 3        0  2  9  0  0  3
name 4        0  2  0  0  6  0
name 5        1  0  0  0  0  0
name 6        0  0  9  0  6  0
基本上,我想做的是:
一,。对于每一列,在每个单元格中查找除0以外的数字;
二,。如果达到此条件,则用相对“状态”标题替换单元格值。这意味着,例如,如果A4为0,则将其替换为A3值

我使用的代码如下:

Sub Iterate_replace()
    Sheets("matrix").Select

    Dim r As Range, cell As Range, state As Range

    Set r = Range("C3")
    Set state = Range("C2")

    For Each cell In r
        If cell.Value <> "0" Then
            cell.Value = state.Value
        End If
    Next
End Sub
Sub-Iterate_replace()
表格(“矩阵”)。选择
Dim r作为范围,单元格作为范围,状态作为范围
设置r=范围(“C3”)
设置状态=范围(“C2”)
对于r中的每个单元格
如果单元格的值为“0”,则
cell.Value=state.Value
如果结束
下一个
端接头
它在单个列的定义范围内工作良好,但我在使其动态化方面遇到了困难。我应该使用R1C1符号来表示范围内的单元格吗?我所能找到的所有相关内容都没有明确说明如何使这个迭代更加灵活。我应该使用嵌套循环吗?环对我来说是一件很难把握的事情,所以,请耐心等待


如果有人能给我指出正确的方向,我将不胜感激。谢谢

我假设每张纸上除了所讨论的矩阵之外没有其他东西。在这种情况下,您应该能够通过如下方式修改代码,使您的过程成为动态的:

Sub Iterate_replace()
    Sheets("matrix").Select
    Dim i As Integer, j As Integer
    Dim state As Range

    Set state = Range("C2")

    'Loops through each row and each column in matrix
    For i = state.Column To ActiveSheet.Cells(state.Row, Columns.Count).End(xlToLeft).Column
        For j = state.Row + 1 To ActiveSheet.Cells(Rows.Count, state.Column).End(xlUp).Row
            If Cells(j, i).Value <> 0 Then
                Cells(j, i).Value = Cells(state.Row, i).Value
            End If
        Next j
    Next i
End Sub
Sub-Iterate_replace()
表格(“矩阵”)。选择
尺寸i为整数,j为整数
变暗状态作为范围
设置状态=范围(“C2”)
'循环遍历矩阵中的每一行和每一列
对于i=state.Column到ActiveSheet.Cells(state.Row,Columns.Count).End(xlToLeft).Column
对于j=state.Row+1到ActiveSheet.Cells(Rows.Count,state.Column).End(xlUp).Row
如果单元格(j,i)的值为0,则
单元格(j,i).Value=单元格(state.Row,i).Value
如果结束
下一个j
接下来我
端接头

如果您已经定义了最左边的状态值位于哪个单元格中,这将循环遍历矩阵中的每一列和每一行。

这太棒了。所以我所需要的只是嵌套循环和一些关于如何确定范围的知识。非常感谢您,我从您的片段中学到了很多(是的,您的假设是正确的)。