vba 如何将一个已经动态生成的excel工作表里的某两个单元格进行判断,并给其他单元格进行合并? 使用VBA, 如何将一个EXCEL文档中某个区域的内容自动复...
如果想把多个单元格中的文字内容复制后粘贴到一个单元格中,(也就是合并到一个单元格中),虽然用函数或者连接符(&)等可以实现这个目的,不过使用起来会有点麻烦。因此,关于把多个单元格内容合并为一个单元格的操作,详细的方法如下:
首先,先选择要合并的单元格区域。
选择单元格区域后,用点击开始选项卡中的“复制”按钮或者按键盘的“Ctrl+C”键等方法进行复制。
复制后点击开始选项卡中下图所示的“剪贴板”功能区右下角的按钮,这个按钮比较小。
点击后会打开Excel自带的剪贴板,在剪贴板中会显示已复制的内容。
此时用鼠标双击要粘贴的单元格,让光标在该单元格中闪烁。
也可以用鼠标单击选中要粘贴的单元格,再在编辑栏中点击鼠标,让光标在编辑栏中闪烁。
然后用鼠标点击剪贴板中已复制的内容。
点击剪贴板内容后,之前复制的多个单元格中的内容就合并粘贴到所选单元格中了。
粘贴后点击剪贴板的关闭按钮关闭剪贴板即可。
粘贴后的内容通常是分行排列的,如果想把所有复制的内容都排列在一行,可以点击开始选项卡中图示的“自动换行”按钮,取消单元格中的自动换行。
取消单元格的自动换行后,所有内容就都排列在一行了,这样就完成了多个单元格内容的合并。
直接用数据【数据透视表】功能可能实现这样的汇总,一般系统功能可以实现的不建议用VBA。要用VBA写代码也是可以实现的,只是稍微有点长,如果有兴趣可以研究,思路是使用两个数组,一是原表数据,一个是汇总后的新表数据,对原表扫描,把数据累加到新表中,关键代码示例如下:
Option Explicit
Sub 汇总()
Dim arr1, arr2, m, n, i1, i2, j, n2, x
arr1 = ActiveSheet.UsedRange '提取原表数据
n = UBound(arr1)
m = UBound(arr1, 2)
ReDim arr2(1 To n, 1 To m) '定义新表
n2 = 0
For i1 = 1 To n
x = 0 '寻找i1行在新表中的位置
For i2 = 1 To n2
If arr2(i2, 1) = arr1(i1, 1) And arr2(i2, 2) = arr1(i1, 2) And arr2(i2, 3) = arr1(i1, 3) And arr2(i2, 4) = arr1(i1, 4) Then
x = i2
Exit For
End If
Next i2
If x = 0 Then '新行
n2 = n2 + 1
x = n2
For j = 1 To 4
arr2(x, j) = arr1(i1, j)
Next j
End If
For j = 5 To m
If VarType(arr1(i1, j)) = vbString Then
arr2(x, j) = arr2(x, j) & arr1(i1, j) '文本链接
Else
arr2(x, j) = arr2(x, j) + arr1(i1, j) '数值累加
End If
Next j
Next i1
'把汇总结果写入新文件
If n2 > 0 Then
Workbooks.Add
Range("a1").Resize(n2, m) = arr2
End If
End Sub
请教,如何使用VBA将一个工作簿下的某个工作表中部分单元格数值赋值给另一个工作簿下的工作表中?谢谢!~
还没有人帮忙吗?那我就来试试吧。
不知道楼主想要怎么样的结果,我这里就纯粹以自己的臆想来做啊
在这里,我假设有两个excel文件是在同一个文件夹里的,一个为1.xlsx,另一个为2.xlsx
(这里有必要说明一下,我用的是excel2007版的)
那么假设1.xlsx里的sheet1中的A1和C2单元格是我们所要赋值的源单元格,我们想要将它们分别赋值给2.xlsx中的B1,B2单元格,那么可以在1.xlsx用vba代码,具体做法如下:
(1)将1.xlsx打开,然后同时按下Alt+F11,打开visual basic 编辑器
(2)选择菜单上的“插入”下的“模块”,出现一个空白窗口后,粘贴以下代码:
Sub test()Dim r1 As Range
Dim r2 As Range
Dim w As Workbook
ThisWorkbook.Activate
Set r1 = ThisWorkbook.Sheets(1).[a1]
Set r2 = ThisWorkbook.Sheets(1).[c2]
Set w = Workbooks.Open(ThisWorkbook.Path & "\2.xlsx")w.Sheets(1).[b1] = r1
w.Sheets(1).[b2] = r2
SendKeys "~"
w.Save
w.Close
End Sub
(3)回到excel窗口,按下Alt+F8,选中“test”,然后点执行就可以了。
以下是补充说明的几点:
(1)这只是一个例子,可能与楼主的要求符
(2)我用的是excel2007版的,代码可能有些不兼容
(3)在运行代码的过程中,2.xlsx这个文件的打开及关闭过程是看不到的,楼主可以在运行代码前和运行代码后对比一下差别。
好了,就想到说这些,希望对你有帮助,如有疑问,欢迎追问!
这就一句话的事呀,两个工作簿都已经打开的情况下
Sub MyCopy()
Workbooks("工作簿1.xls").Sheet1.Range("A1:C50").Copy ThisWorkbook.Sheet2.Range("A1")
End Sub
意思就是把工作簿1中工作表sheet1的A1:C50区域复制到当前工作簿sheet2工作表的A1区域(这个区域与前面的区域是一样的,只需要写左上角的单元格即可)