在Excel中有条件地交换单元格内容

时间:2012-12-10 17:17:10

标签: excel excel-vba vba

我想知道,在excel文件中给出3列,如何在给定第三列的值的情况下有条件地交换前两列的内容。

A B C


1年
b 2 n
c 3 y
d 4 y
e 5 n

我想要做的是:每当C列中包含值“y”的行时,我想交换同一行的A列和B列中的值。

除了VBA之外没有别的办法吗?

希望问题很清楚。

由于

1 个答案:

答案 0 :(得分:1)

我认为有两种方法可以做到:

  1. 创建2列,您可以在其中插入一个简单的函数 =IF(C="something", B, A)和另一方面(A,B)相反 柱。这将根据需要进行切换,然后就可以 将值复制粘贴到列上并删除临时值 列。
  2. 在循环内的if-statement内部使用简单的交换算法。如果您对VBA有非常基本的了解,这应该非常简单。如果您没有这方面的知识,那么请在internetz上查找。
  3. 代码的一般感觉应该是:

    Dim cell as Range
    Dim temp as string
    for each cell in Range("C2:C" & Range("C2").End(xlDown).Row)
        if cell.value = "something" then
            temp = cell.offset(0, -1).value
            cell.offset(0, -1).value = cell.offset(0, -2).value
            cell.offset(0, -2).value = temp
        end if
    next cell