EXCEL中转置粘贴成值功能如何设置成热键或鼠标手势?

您所在的位置:网站首页 数据数值化快捷键 EXCEL中转置粘贴成值功能如何设置成热键或鼠标手势?

EXCEL中转置粘贴成值功能如何设置成热键或鼠标手势?

2024-07-14 05:53| 来源: 网络整理| 查看: 265

先说为何要转置粘贴值:转置粘贴就是行列方向转换,粘贴值就是避免公式因转置位置变换导致结果错误。

手动操作步骤

 

一两个数据还可以,但是经常这样操作的朋友,要多次操作的话,要这么点肯定很烦躁。

VBA--通过录制宏的办法实现

参见 EXCEL中转置粘贴成值的快捷方法

缺点是必须加载宏,是不是文件扩展名变成了xlsm啊,打开时会有安全提示,如果嫌烦放开安全监控又会有潜在安全风险。

"VBK"--通过AutoHotkey来解决

本人擅长AHK,于是用AHK解决它。

上面的录制的宏是:

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True

移植成AutoHotkey,可以灵活定义热键哦,比如:Capslock+v

;常量 ; Constants xlFormatFromLeftOrAbove := 0 xlShiftDown := -4121 xlShiftUp := -4162 xlPasteAll:=-4104 ;xlPasteAll 粘贴全部 xlPasteFormulas:=-4123 ;xlPasteFormulas 粘贴公式 xlPasteValues:=-4163 ;xlPasteValues 粘贴数值 xlPasteFormats:=-4122 ;xlPasteFormats 粘贴格式 xlPasteComments:=-4144 ;xlPasteComments 粘贴批注 xlNone:= -4142 ;热键 Capslock + V 触发 CapsLock & v:: ComObjActive("Excel.Application").Selection.PasteSpecial(xlPasteValues,xlNone,ComObjParameter(0xB, 0 ), ComObjParameter(0xB, -1)) Return

以上需要特别注意是:true用ComObjParameter(0xB, -1)表示

false用ComObjParameter(0xB, 0 )  表示

通常,值false表示为0,值true表示任何非0整数值.true和false(以及其他)的具体值是您不应该依赖的东西 - 它们可能是特定于实现的.我不确定你要做什么,但最好不要依赖True或False拥有任何特定的整数值,除非你绝对必须这样做.

对于VB的特定行为,我能找到的最佳解释来自维基百科:

布尔常量True的数值为-1.这是因为布尔数据类型存储为16位有符号整数.在此构造中,-1计算为16个二进制1(布尔值为True),0为16 0(布尔值为False).当对16位有符号整数值0执行Not运算时,这将显而易见,该值将返回整数值-1,换句话说,True = Not False.当对整数的各个位执行逻辑运算时,这种固有功能变得特别有用,例如And,Or,Xor和Not.[4] 自20世纪70年代早期的Microsoft BASIC实现以来,True的这一定义也与BASIC一致,并且还与当时CPU指令的特性有关.

我们来看看PasteSpecial方法的语法:

    Range对象.PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

说明:

参数均为可选。若没有指定参数,则直接粘贴。

参数Paste可以指定一个xlPasteType常量,指定复制的具体内容。默认为全部复制。其具体常量参见下图。

此外,还有一个xlPasteAllMergingConditionalFormats常量,粘贴全部内容且合并条件格式(注:本文使用的是Excel 2007版本)。

参数Operation可以指定一个xlPasteSpecialOperation常量,指明粘贴时要进行的运算操作,即将复制的单元格中的数据与指定单元格区域中的值进行加减乘除运算。与上图的“运算”部分相对应:xlPasteSpecialOperationNone代表无,即不进行任何运算操作,这也是默认值;xlPasteSpecialOperationAdd代表加运算,即将指定的单元格区域中的值加上所复制的单元格中的值;xlPasteSpecialOperationSubtract代表减运算;xlPasteSpecialOperationMultiply代表乘运算;xlPasteSpecialOperationDivide代表除运算。

参数SkipBlanks与上图中的“跳过空单元格”相对应,设置为True(即在上图中选中“跳过空单元格”)表示剪贴板中单元格区域的空单元格不会被粘贴到目标单元格区域,即被粘贴区域中与复制的单元格区域中空单元格对应的区域仍为原值。默认为False。

参数Transpose与上图中的“转置”相对应,设置为True表明当粘贴时要将行列互换。默认为False。

为方便理解,再将上图详细解释如下:

全部:粘贴所有内容,包括文本、格式、边框、公式、批注等,相当于直接粘贴。

公式:只粘贴文本和公式,不粘贴其它如格式、边框、批注等。如果复制的单元格中的公式相对引用了其它单元格,那么粘贴的单元格相应引用的单元格的相对位置与源公式相同。

数值:只粘贴数值,尽管所复制的单元格中的内容是公式计算的结果。

格式:只粘贴格式,不改变粘贴单元格内容。

批注:只粘贴所复制单元格的批注,不改变粘贴单元格内容和格式。

有效性验证:只粘贴有效性验证的内容。

边框除外:粘贴除边框外的所有内容。

列宽:使粘贴单元格与所复制的单元格列宽相同。

公式和数字格式:只粘贴公式和数字格式。

值和数字格式:粘贴值并带数字格式。

有兴趣的朋友可以在Excel中随意设置数据,使用不同的选项粘贴,看看实际效果。

高级玩法,用鼠标手势调用“VBK”

鼠标手势工具很多,本文以MouseInc为例,  MouseInc 中配置←↓ 手势为转置粘贴值功能。

这里需要注意的是,要将上面的ahk代码,去掉热键那一行。(用英文分号开头就是注释掉这一行的意思)

然后把脚本命名为“转置粘贴值.ahk”,并把AutoHotkeyU32.exe也与脚本放到同一个目录,并把AutoHotkeyU32.exe改名成“转置粘贴值.exe”,这样就免去编译了。用鼠标手势调用,不用ahk脚本常驻内存了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3