vba - 将范围内的所有“0”替换为同一行中的值,但替换为A列

时间:2013-07-10 12:19:12

标签: vba excel-vba excel

我有一个包含列名和行名的表。表是在某些交叉文件中具有“0” - 零的字段;所有其他的filds都是空的。 我想要的是将所有“0”替换为A列(行名称)中的单元格。

表每次都可以有不同的大小。

我是vba的新手 - 所以我唯一的意思是我需要为每个“0”找到并用同一行中的vale替换它,但是库存A - 如何?: - (

2 个答案:

答案 0 :(得分:0)

获取细胞:

Dim StartCell as Range
Set StartCell = Sheet1.Range("A1") //or any coordinate, but I assume you start in A1 (the column with line names and the line with column names)

循环命名的行和列,直到它们为空:

Dim Line as Integer, Column as Integer
Dim LineName as Range, ColumnName as Range

Line = 1 'line index to loop
Column = 1 'column index to loop

Set LineName = StartCell.Offset(Line,0) 'the first line name cell
Set ColumnName = StartCell.Offset(0, Column) 'the first column name cell

Do While (LineName.Value <> "") ' while you have line names, not end of sheet
    Do While (ColumName.Value <> "") ' while you have column names, not end of sheet

        'Check if cell in current line and column has zero value
        If StartCell.Offset(Line, Column).Value = 0 Then
            'change its value for line name
            StartCell.Offset(Line, Column).Value = LineName.Value
        End If

        Column = Column + 1 'go next column index
        Set ColumnName = StartCell.Offset(0,Column) 'get next column name
    Loop

    Column = 1 'reset column for next line loop
    Line = Line + 1 'go next line index
    Set LineName = StartCell.Offset(Line,0) 'get next line name
Loop

答案 1 :(得分:0)

非VBA答案:

您可以创建一个公式来进行此操作,并将公式拖放或复制/粘贴到不同的区域或表格中。

假设您的工作表从A1到D4。 (第1行和第1列有名称)

拿一些像G2这样的细胞并把这个论坛:

= if (B2 = 0; $A2; "")

将其拖至J4。因此,您创建了一个具有所需名称的并行表。 然后复制该新表并paste special - values only代替原始表。