【问题标题】:Set variable columns between worksheets在工作表之间设置变量列
【发布时间】:2015-10-16 00:59:24
【问题描述】:

谁想要轻松的积分?我正在尝试使用变量将一系列列从一张纸设置到另一张纸。 startm 将始终是一个整数。我知道我可以做类似thisthis 的事情,但我讨厌offsetXD 除了连接一百万个 "s 和 "&"s 之外,还有什么“更聪明”的方法吗??

For Each s In thisWB.Worksheets
...
With ws
.Columns(3:14-startm+1)=s.columns(startm:14) 'this don't work ;_;

【问题讨论】:

  • “将列范围从一张纸设置到另一张纸”是什么意思?就像您希望将一个范围内的所有值复制到另一个范围,这两个范围是一组列?
  • 是的,没错,但我不想格式化,所以不要复制/粘贴。编辑:我想将第 5 列到第 10 列从一张表转移到另一张表中的第 2 列到第 7 列。除了这些数字会有所不同。
  • 使用s.Columns(5).Resize(, 5).value = .Columns(2).Resize(, 5).value
  • 我走另一条路,它并不总是从 2 或 5 XD 开始编辑:但我喜欢你的想法。我可以做类似.columns(startm+1).resize(startm) 等的事情
  • 公平地说.Columns(3).Resize(, 14 - startm + 1).value = s.Columns(startm).Resize(, 14 - startm + 1).value

标签: excel vba


【解决方案1】:

根据要求,我会使用:

.Columns(3).Resize(, 14 - startm + 1).value = s.Columns(startm).Resize(, 14 - startm + 1).value

【讨论】:

  • 为了让这个更“显而易见”,您可以将14-startm + 1 粘贴到一个具有好听名称的变量中,例如writeColumn,同样为您的readColumn。然后下一个出现并且必须破译所写内容的可怜笨蛋将知道发生了什么而无需思考。
  • +1 只是为了可怜的笨蛋。是和不是。我个人讨厌破译变量,即使我同意它是有道理的,那只会增加一个。是的,我疯了XD
【解决方案2】:

由于您使用的是列号而不是字母,因此这里最好的方法是 for 循环:

For Each s In thisWB.Worksheets
...
With ws

    For col = 3 to 14-startm+1
        'may have to adjust these values in here to fit your dynamic need, but
        '  the overall idea here is sound
        .Columns(col).Value = s.Columns(col+startm).Value
    Next col
End ws
Next s

我没有在.columns()... 行的后半部分对您的 startm +/- 内容进行逆向工程,但这应该可以满足您在填写该空白后的需要。

【讨论】:

  • 叹息。是不是矫枉过正?我想我正在寻找一种“聪明”的方式。
  • 欢迎使用 VBA 和 Excel。只需在子程序的开头粘贴On Error Resume Next,然后写任何你想要的。
  • 你会认为 msft 会构建它,这样人们就可以编写 columns(x:y) 并让它工作,但是没有哦哦哦哦哦 XD
  • 是的。我也不明白。在编程环境中将列和范围称为字母。不是 MS 做过的最天才的事情。
【解决方案3】:

你可以试试这样的:

Range(.Cells(1, 3), .Cells(1, 14 - startm + 1)).EntireColumn = _
   Range(Sheets(1).Cells(1, startm), Sheets(1).Cells(1, 14)).EntireColumn.Value

但如果没有一定的限制,它可能会很慢

【讨论】:

  • 是的,这看起来很令人讨厌-_-我想我想要一些立即显而易见的东西,我将从 x 列转到 y 列 XD
猜你喜欢
  • 2021-02-14
  • 1970-01-01
  • 2019-06-01
  • 2016-02-21
  • 2019-02-05
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多