首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用左边没有复制和粘贴

使用左边没有复制和粘贴
EN

Stack Overflow用户
提问于 2014-11-24 05:23:47
回答 3查看 224关注 0票数 1

我有一些数据,我想要被削减到最初的12个数字,不管有多少。我目前的做法是从C列取数字,在G列中,我有一个公式=Left(C3,12),然后向下拖动,使其与C中的范围相匹配,然后运行一个宏,如下所示:

代码语言:javascript
复制
Sub Macro6()

    Range("G3:G7").Select
    Selection.Copy
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

 End Sub

这是可行的,但我必须不断更新范围,它有点笨重。有谁知道更好的方法来完成同样的事情吗?(基本上使C中的值成为前12位数字)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-24 05:46:55

如果我没听错的话,你想用同一个单元格的前12位数字替换C列中单元格的内容。

从如下所示的数据开始:

运行以下命令:

代码语言:javascript
复制
Sub keep12()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim rng As Range
    Set rng = wks.Range("C3:C" & wks.Range("C" & wks.Cells.Rows.Count).End(xlUp).Row)

    For Each cell In rng
        cell.Value = Left(cell.Text, 12)
    Next cell
End Sub

结果:

票数 1
EN

Stack Overflow用户

发布于 2014-11-24 06:52:34

最快的路!不需要VBA。

  1. 在Col A之后插入空白栏。
  2. 突出Col A。
  3. 单击“数据”中的“到列”文本
  4. 选择Fixed Width
  5. 在12个字符后设置字段,如图像所示,然后单击Finish
  6. 删除B列(我们插入的那个)。

这是输出

票数 2
EN

Stack Overflow用户

发布于 2014-11-24 07:43:20

其他答案也是这方面的有效解决方案,Excel公式答案是实现它的最有效方法@Siddharth Rout。我只是简单地添加了另一种方法,在这种情况下,可以更直接地满足OP的具体需求,将数据从C列复制到G列。

代码语言:javascript
复制
Sub LeftFilterAll()

Dim sheetName As String
Dim LastRow As Long

sheetName = "Sheet1"
LastRow = Sheets(sheetName).Range("C" & Rows.Count).End(xlUp).row   ' Count the last row in Column C

For row = 2 To LastRow
 'Left 12 From C to G
    Sheets(sheetName).Cells(row, 7).Value = Left(Sheets(sheetName).Cells(row, 3).Text, 12)
Next row

End Sub

沿着这条路走下去,您可能希望这样做,这样它就可以简单地更新G列中的值,而不是全部替换它们,如果您发现正在为1或2个新记录一遍又一遍地运行这些值,而不是整个组,则得到G列的最后一行并从该行号开始。所以您只需要更新下面的内容。如果您计划在输入C值后更改它们,这是没有好处的,因为它们只会被处理一次。

代码语言:javascript
复制
Sub LeftFilterUpdate()

Dim sheetName As String
LastCRow = Sheets(sheetName).Range("C" & Rows.Count).End(xlUp).row   ' Count the last row in Column C
LastGRow = Sheets(sheetName).Range("G" & Rows.Count).End(xlUp).row   ' Count the last row in Column G

For row = LastGRow To LastCRow
 'Left 12 From C to G
    Sheets(sheetName).Cells(row, 7).Value = Left(Sheets(sheetName).Cells(row, 3).Text, 12)
Next row

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

https://stackoverflow.com/questions/27098341

复制
相关文章

相似问题

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