【问题标题】:Excel VBA transpose with charactersExcel VBA转置字符
【发布时间】:2013-05-17 15:33:25
【问题描述】:

我有一个包含 918 个单元格的范围 (A1:A918)。每个单元格都有一个字符串。我需要 vba 代码用引号 (" ") 将每个单元格括起来,并在末尾添加一个逗号 (,)。然后转置列表。我也无法将这些字符添加到当前列表中。

例如

CURRENT LIST  (Sheet1)
Cell A1: Bob
Cell A2: Jane
Cell A3: Dan
Cell A4: Phil
Cell A5: Jimmy


RESULT (Sheet2)
Cell A1: "Bob",
Cell B1: "Jane",
Cell C1: "Dan", 
Cell D1: "Phil",
Cell E1: "Jimmy",

It will appear like this: "Bob", "Jane", "Dan", "Phil", "Jimmy"

我知道使用以下转置:

Worksheets("Sheet1").Range("A1:A5").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True

但我不知道如何将字符串包含到每个单元格中。有人可以帮忙吗?

【问题讨论】:

    标签: vba excel transpose


    【解决方案1】:

    这应该可以解决问题

    Sub Macro1()
    Worksheets("Sheet1").Range("A1:A6").Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste
    'Columns("A:A").Select
    Sheets("Sheet2").Range("A:A").Select
    Selection.NumberFormat = """''""@""''"""","""
    Worksheets("Sheet2").Range("A1:A6").Copy
    Worksheets("Sheet2").Range("B1").PasteSpecial Transpose:=True
    End Sub
    

    【讨论】:

    • 这看起来很有希望,但在这一行:“Columns("A:A").Select" 我收到一个错误:1004: Select Method of Range Class Failed
    • 有趣。我改变了上面的东西,所以它应该对你有用。
    【解决方案2】:

    您可以粘贴到目标工作表上的单元格 A1,然后使用“文本到列”方法吗? http://msdn.microsoft.com/en-us/library/office/ff193593.aspx

    编辑: 可能我没看懂这个问题。尝试类似

    Sub transpose()
    Dim rng As Range
    Dim ws As Worksheet
    Dim last As Range
    
    Set ws = ActiveSheet   
    Set last = ws.Cells(Rows.Count, "A").End(xlUp)
    Set rng = ws.Range("A1", last)
    
    For Each cell In rng
        Dim hold As String
        hold = """"
        hold = hold + cell.Value
        hold = hold + """" + ", "
        cell.Value = hold
    Next cell
    
    rng.Copy
    ActiveWorkbook.Sheets(2).Range("A1").PasteSpecial transpose:=True
    

    结束子

    【讨论】:

      猜你喜欢
      • 2011-11-28
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2012-12-14
      • 1970-01-01
      相关资源
      最近更新 更多