从B列粘贴到Colum D的VBA Excel问题

我必须将B列的产品代码复制/粘贴到D列。

B列中的大部分单元格都是这样的:

XX787 DO BOLOGNESE 2X2.28KG FR

项目代码是这种情况下的前5个字符。

但B列中的几个单元格就是这样的:

01333379水稻长粒PB磨10 BB

在这些情况下,项目代码不是5而是8个字符,并且存在数字+第一个字符是零。

我有的问题:

  • 当我从B列复制/粘贴到D列时,不会显示开始时的零点。我尝试将所有单元格值粘贴为文本,以便显示零,但这并没有帮助。 我用这个代码格式化为文本:ActiveSheet.Range(“B:D”)。NumberFormat =“@”
  • 第一个字符放在B列,但是当它更多的字符,其余的字符也不会被放入…

这段代码对我来说工作正常,不会删除前导零:

Dim i As Integer 'Set the numberformat of column D to text Range("D1").EntireColumn.NumberFormat = "@" 'Loop through the used rows For i = 1 To UsedRange.SpecialCells(xlCellTypeLastCell).Row Step 1 'assign the item code to column D Cells(i, "D").Value = Split(Cells(i, "B").Value, " ")(0) Next i 

解释Split()函数: Split()将指定的string( Cells(i, "B").Value )分割成一个数组,可以指定分隔符(在本例中为空格))。

由于returnvalue是一个数组,所以我们可以告诉VBA只返回第一个值,它应该是项目代码。 这是通过在行尾添加(0)来完成的。

运行macros之前,只需将目标单元格格式更改为文本。 如果你在运行macros之后执行它,那么零不会在那里。