首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel宏-尝试在5个水平空间中抓取5行,并将它们堆叠在一起

Excel宏-尝试在5个水平空间中抓取5行,并将它们堆叠在一起
EN

Stack Overflow用户
提问于 2018-09-06 00:42:29
回答 1查看 35关注 0票数 0

我有一列数据,其中一个单词在它下面被翻译了4次。然后在列中重复执行所有这些操作。我想要有4列,每种语言的翻译在每一个。它们目前堆叠在一起。我已经尝试了一个宏,但似乎不能让它循环。

代码语言:javascript
运行
复制
Range("B3").Select
Selection.Cut
Range("C2").Select
ActiveSheet.Paste
Range("B4").Select
Selection.Cut
Range("D2").Select
ActiveSheet.Paste
Range("B5").Select
Selection.Cut
Range("E2").Select
ActiveSheet.Paste
Range("B6").Select
Selection.Cut
Range("B3").Select
ActiveSheet.Paste
Range("B7").Select
Selection.Cut
Range("C3").Select
ActiveSheet.Paste
Range("B8").Select
Selection.Cut

最好是使用剪切,然后将第一列向上移动,然后重复相同的操作?

附图的数据在左边和它应该如何看起来在右边。感谢您的指点,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-09-06 00:45:02

暂时假装语言是井然有序的,下面是几种不同的做事方式:

1)公式- =Index(A:A,Row()*4+1) (将1改为2、3、4,视情况而定)

2) VBA简单循环基础-

代码语言:javascript
运行
复制
For i = 2 to LastRowA
    if i mod 4 = 1 then
          LastRowB = 'LastRow for column B
          ws.range("B" & LastRowB + 1) = ws.range("A" & i)
     else if i mod 4 = 2 then
           LastRowC = 'LastRow for column B
          ws.range("C" & LastRowC + 1) = ws.range("A" & i)
     else if i mod 4 = 3 then
          LastRowD = 'LastRow for column B
          ws.range("D" & LastRowD + 1) = ws.range("A" & i)
     else if i mod 4 = 0 then
          LastRowE = 'LastRow for column B
          ws.range("E" & LastRowE + 1) = ws.range("A" & i)
     End if


Next i

注意,这只是像这样的条件循环的粗略结构-语法需要进一步的调整和编辑(以及一些关于如何找到lastrow的研究)

我推荐公式化的方法。

另请注意:我列出的方法将保留原始数据,这是我在执行此类工作时的首选。如果有任何错误,它可以让你免费“重来一遍”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52189946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档