找回密码
 加入
搜索
查看: 6034|回复: 15

[系统综合] au3如何将excel绿三角的字符列转换为数值列?

 火.. [复制链接]
发表于 2016-8-27 19:24:45 | 显示全部楼层 |阅读模式
au3如何将excel绿三角的字符列转换为数值列?
在excel中可以选中这一列的单元个,然后点击小黄感叹号进行转换,但通过autoit的程序代码如何快速将一个列的数据全部转换为数字。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-8-27 20:03:48 | 显示全部楼层
可以录制宏操作,然后用AU3循环实现。
 楼主| 发表于 2016-8-27 20:09:04 | 显示全部楼层
早就测试了录制宏,但宏不记录那个黄感叹号下的转换操作呀
发表于 2016-8-27 21:04:04 | 显示全部楼层
回复 3# sdwd_lhq


    提供一下范文呢!
 楼主| 发表于 2016-8-27 21:15:08 | 显示全部楼层
Sub Macro1()
'
' Macro1 Macro
' 宏由 微软用户 录制,时间: 2016-8-27
'

'
    Range("L2:L18").Select
-----这里是手工操作,手工转换成数值,但没有录制语句
    Selection.NumberFormatLocal = "#,##0.00_ "
    Range("L14").Select
End Sub
 楼主| 发表于 2016-8-27 21:19:32 | 显示全部楼层
        $oExcel = _ExcelBookOpen($filename, 1, False)
        _ExcelSheetActivate($oExcel, 1) ;切换标签到8
        $oExcel.Cells.Select();选择所有单元格
        $oExcel.Cells.Font.Name = "宋体";
        $oExcel.Cells.Font.Size = 9;设置字体大小为9
        $oExcel.Columns.AutoFit ;自动调整列以获得更佳视图
        $oExcel.Rows.AutoFit ;自动调整行以获得更佳视图
        
        ;;下面代码根据列的值判断是否为数值字符串,然后将相应的数值字符列转换为数值
        For $i = 1 To $oExcel.ActiveSheet.UsedRange.Columns.count
                $sCellValue = _ExcelReadCell($oExcel, 2, $i)
                If StringIsFloat($sCellValue) Or (StringIsInt($sCellValue) And StringInStr($sCellValue, ".") > 0) Then
                        ;;这里是转换语句,不知该怎么写?
                        $oExcel.Columns($i).HorizontalAlignment = -4152 ;设置水平对齐方式为居右
                        $oExcel.Columns($i).NumberFormatLocal = "#,##0.00"
                EndIf

        Next
发表于 2016-8-27 21:42:06 | 显示全部楼层
回复 6# sdwd_lhq

确实不会记录宏,等99大神上来看看,他可是操作EXCEL老手了。
发表于 2016-8-28 06:38:25 | 显示全部楼层
这个问题我也一直在寻求解决方法。目前我采用的变通方法,假设添加R列
$Oexcel.activesheet.range("R1:R10).value=$Oexcel.activesheet.range("L1:L10).value
 楼主| 发表于 2016-8-28 09:44:33 | 显示全部楼层
回复 8# h20040606
感谢回复,期待传说中的99大神,看有无好的方法
发表于 2016-8-29 13:09:43 | 显示全部楼层
回复 1# sdwd_lhq


人工作法  

選取全部  然後 貼到  TXT 檔案 然後再複製一次

再貼回來  就全部解決

所以 AU3 應該 可以仿  一樣的邏輯   選取全部  設到 另外的變數
然後清空 解貼簿 然後  然貼回來看看
发表于 2016-8-29 23:08:43 | 显示全部楼层
回复 10# kk_lee69


    我试了一下,是把单元格设置成文本才有绿色,可以用au3设置回来不?
发表于 2016-8-30 20:29:18 | 显示全部楼层
判断这个错误
$rng.errors(3).value=true
$rng是单元格对象
发表于 2016-8-31 10:43:01 | 显示全部楼层
回复 12# kevinch


    实验不成功。
发表于 2016-8-31 11:46:53 | 显示全部楼层
回复 1# sdwd_lhq

解決方式  我上面有說邏輯     實際驗證可行

建立一個A1檔案  在 A1~A5 的 格˙子  弄成有綠色的 再改一下我的程式  跑一下就知道

#include <Excel.au3>

$sFilePath="D:\A1.xlsx"

$oExcel = _ExcelBookOpen($sFilePath,1) ;打開EXCEL表

$oExcel.Range("A1:A5").Copy
$A=ClipGet()
$oExcel.Range("A1:A5").ClearContents
$oExcel.Range("A1:A5").NumberFormatLocal = "#,##0.00_ "
ClipPut($A)
$oExcel.Range("A1").Select
$oExcel.activesheet.range("A1" ).PasteSpecial
发表于 2016-8-31 11:47:12 | 显示全部楼层
回复 1# sdwd_lhq

解決方式  我上面有說邏輯     實際驗證可行

建立一個A1檔案  在 A1~A5 的 格˙子  弄成有綠色的 再改一下我的程式  跑一下就知道

#include <Excel.au3>

$sFilePath="D:\A1.xlsx"

$oExcel = _ExcelBookOpen($sFilePath,1) ;打開EXCEL表

$oExcel.Range("A1:A5").Copy
$A=ClipGet()
$oExcel.Range("A1:A5").ClearContents
$oExcel.Range("A1:A5").NumberFormatLocal = "#,##0.00_ "
ClipPut($A)
$oExcel.Range("A1").Select
$oExcel.activesheet.range("A1" ).PasteSpecial
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 20:56 , Processed in 0.173903 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表