excel - 用 VBA 连接单元格内容
问题描述
Excel 中的原始数据集如下所示:
但我想将例如单元格 A3:A4 转置为 B4:C4。在 Excel 中,我只需要复制单元格,然后在单元格 B4 中单击鼠标右键,然后单击转置复制单元格。但是由于有 100k 行,我需要找到一个好的解决方案来做到这一点。
一个问题是在单元格之间,我有“第一部分”、“第二部分”、“第三部分”之类的文本内容,我不想转置它。
对于第一节的意思,应该只考虑A3和A4等。
这是图片,我应该是什么样子。
[ 2
我记录了宏,但我不知道应该在哪里用“IF-Clause”告诉他们它应该只考虑除黄色单元格之外的所有内容。
Sub transponieren()
'
' transponieren Makro
'
'
Range("A3:A4").Select
Selection.Copy
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
解决方案
您可能正在寻找的“测试”就是IsNumeric()
测试。以下代码建议假定您的数据在 Sheet1 上,并且数字实际上是数字而不是文本。可能有一个更优雅的解决方案,但这确实有效:
Sub transposeNumbers()
Dim c As Range, LastRow As Long, TopN As Long, LastN As Long
LastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
For Each c In Sheet1.Range("A3:A" & LastRow)
If IsNumeric(c.Offset(-1, 0)) = False Then
TopN = c.Row
Else
If IsNumeric(c.Offset(1, 0)) = False Or c.Row = LastRow Then
LastN = c.Row
Sheet1.Range(Sheet1.Cells(TopN, 1), Sheet1.Cells(LastN, 1)).Copy
c.Offset(0, 1).PasteSpecial Paste:=xlPasteAll, transpose:=True
Application.CutCopyMode = False
End If
End If
Next c
End Sub
推荐阅读
- vue.js - vue-router:按名称和参数导航到嵌套状态/路由
- javascript - 将 v-menu 添加到按钮使其在 Vuetify 中消失
- python - 如何使用 Scrapy 一次运行单个蜘蛛的多个版本?
- html - HTML 中 div 内的表单不可点击
- azure-cosmosdb - 在 WebApp 内部时 Cosmos DB Graph 不连接:现有连接被远程主机强行关闭
- angular - 地图
FireStore 错误 - java - Android 加密/解密
- javascript - 本地存储不识别阵列名称
- sql - 计算两个段之间的天数
- android - 我是否需要 Firebase 才能在我的 Android 应用中使用 Google 登录?