乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel输入数据,只复制不粘贴,数据乖乖就位 甭犹豫,盘他……-excel无法复制粘贴

excel输入数据,只复制不粘贴,数据乖乖就位 甭犹豫,盘他……-excel无法复制粘贴

作者:乔山办公网日期:

返回目录:excel表格制作

前言

有小伙伴每天需要从微信信息中,复制数据粘贴到excel进行处理。一般都是临下班时,一大堆信息来袭,需要赶在下班前录入完成并将汇总结果报给老板。小伙伴是个手脚麻利的二逼青年,每次任务到来时复制粘贴的速度让人好生佩服,但挨不住时间紧任务重,那心中的苦也是如草原上的万马齐奔啊。不过,自从学会这一招后,万马齐奔妙变万马齐喑,轻轻松松提前下班。不多说了,盘他……

模拟案例

excel输入数据,只复制不粘贴,数据乖乖就位 甭犹豫,盘他……

案例模拟的微信收到的信息,如有雷同,就雷同吧,汇总表如下:

excel输入数据,只复制不粘贴,数据乖乖就位 甭犹豫,盘他……

咋眼一看,也就是复制粘贴最直接了。但是,这都快22世纪了,还用复制粘贴怎么可以容忍,是时候放大招了。

解决方案

一键解决,用到第二步算我输。复制好收到的信息后,鼠标左键单击汇总表中B列对应的店名。比如,复制的是西安钟楼店的数据,就单击B列中的B2单元格(西安钟楼),数据输入完成,真的不用粘贴。

有时候数据行太多了,小伙伴找到对应的单元格比较困难咋办,没事儿,随便点击B列的合计行以上的任一行,表格会提醒你应该点哪里的。一是为了便于找到,二来也避免了输错了位置。

那每天都接受到数据,万一复制信息时搞错了,误把昨天的数据当成当天的数据给复制了咋办?也不用怕,汇总表中第一列的日期是根据复制的信息自动生成的,当遇到不一样的日期时,会变色提醒,而且,这个时候也不能进行汇总,让你交不了错误的数据给老板。

到这个时候,你会发现,合计行的数据都没有出现,还要用sum汇总吗?别闹,说好的一键解决,sum起开。输入完成后,点击一下合计单元格,汇总数就会出现了,而且只有当你把所有数据都输入全,而且日期都是一致的时候,汇总数才会出现哦。要是把每个店的数据都给错误地复制成同一天的了,咋办?老板,他成心的,这锅不背。

效果如下:

excel输入数据,只复制不粘贴,数据乖乖就位 甭犹豫,盘他……

重点说明

案例用了VBA代码解决,主要在两个方面:

1、用Worksheet_SelectionChange(),实现当单击B列指定区域单元格时,触发事件,依次从剪贴板中提取数据写入对应的单元格中,重点是用到了对剪贴板的操作。

2、用Sub 提醒(),实现了当点击了B列不是对应的单元格时,让正确的点击位置单元格出现闪动提醒。

3、日期不一致时的变色提醒,就是条件格式设置了,这个没啥说的。

4、重点提醒:有个小BUG召唤大家来抓哦。

具体代码附后,有兴趣的欢迎留言交流。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim a As New DataObject, b() As String, i, j As Integer, bl As Boolean

Set a = New DataObject

On Error Resume Next

bl = False

Dim re As Object

Set re = CreateObject("VBScript.Regexp")

re.Global = True: re.Pattern = "[\\r\\n]+"

i = Target.Row '点击B列填入数据

If i < [b30000].End(3).Row And i > 1 And Target.Column = 2 Then

a.GetFromClipboard

s = re.Replace(a.GetText, vbCrLf)

b = Split(s, vbCrLf)

For k = 2 To [b30000].End(3).Row

If Len(b(0)) < 4 Then Exit Sub

If Cells(k, 2) = Left(b(0), 4) Then

bl = True

Exit For

End If

Next

If bl = False Then Exit Sub

If Cells(i, 2) = Left(b(0), 4) Then

Cells(i, 3).Resize(1, 6).ClearContents

Cells(i, 1) = Mid(b(0), 6, 4)

Cells(i, 3) = Application.WorksheetFunction.Substitute(Mid(b(1), 4, 99), "万元", "")

For j = 4 To UBound(b) + 2

Cells(i, j) = Application.WorksheetFunction.Substitute(Mid(b(j - 2), 4, 99), "件", "")

Next

Cells([b30000].End(3).Row, 3).Resize(1, 6).ClearContents

Else

n1 = Application.WorksheetFunction.Match(Left(b(0), 4), Cells(1, 2).Resize(6, 1), 0)

nname = Left(b(0), 4)

Call 提醒

End If

Erase b

End If

If Target.Row = [b30000].End(3).Row And Target.Column = 2 Then

For i = 3 To [b30000].End(3).Row - 2

If Cells(i, 1) <> Cells(2, 1) Then

MsgBox "数据未全或日期有误,不能汇总,请检查"

Exit Sub

End If

Next

For j = 3 To 8

Cells([b30000].End(3).Row, j) = Application.WorksheetFunction.Sum(Cells(2, j).Resize([b30000].End(3).Row - 2, 1))

Next

End If

End Sub

Public n1 As Integer, nname As String

Sub 提醒()

Dim n As Integer, i As Long

For n = 1 To 100

Cells(n1, 2).Interior.ColorIndex = 3

Cells(n1, 2) = "我在这里"

For i = 1 To 100000

Next

Cells(n1, 2).Interior.ColorIndex = xlNone

For i = 1 To 100000

Next

Next

Cells(n1, 2) = nname

End Sub

excel输入数据,只复制不粘贴,数据乖乖就位 甭犹豫,盘他……

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网