sdwd_lhq 发表于 2016-8-27 19:24:45

au3如何将excel绿三角的字符列转换为数值列?

au3如何将excel绿三角的字符列转换为数值列?
在excel中可以选中这一列的单元个,然后点击小黄感叹号进行转换,但通过autoit的程序代码如何快速将一个列的数据全部转换为数字。

heroxianf 发表于 2016-8-27 20:03:48

可以录制宏操作,然后用AU3循环实现。

sdwd_lhq 发表于 2016-8-27 20:09:04

早就测试了录制宏,但宏不记录那个黄感叹号下的转换操作呀

heroxianf 发表于 2016-8-27 21:04:04

回复 3# sdwd_lhq


    提供一下范文呢!

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

sdwd_lhq 发表于 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

heroxianf 发表于 2016-8-27 21:42:06

回复 6# sdwd_lhq

确实不会记录宏,等99大神上来看看,他可是操作EXCEL老手了。

h20040606 发表于 2016-8-28 06:38:25

这个问题我也一直在寻求解决方法。目前我采用的变通方法,假设添加R列
$Oexcel.activesheet.range("R1:R10).value=$Oexcel.activesheet.range("L1:L10).value

sdwd_lhq 发表于 2016-8-28 09:44:33

回复 8# h20040606
感谢回复,期待传说中的99大神,看有无好的方法

kk_lee69 发表于 2016-8-29 13:09:43

回复 1# sdwd_lhq


人工作法

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

再貼回來就全部解決

所以 AU3 應該 可以仿一樣的邏輯   選取全部設到 另外的變數
然後清空 解貼簿 然後然貼回來看看

heroxianf 发表于 2016-8-29 23:08:43

回复 10# kk_lee69


    我试了一下,是把单元格设置成文本才有绿色,可以用au3设置回来不?

kevinch 发表于 2016-8-30 20:29:18

判断这个错误
$rng.errors(3).value=true
$rng是单元格对象

h20040606 发表于 2016-8-31 10:43:01

回复 12# kevinch


    实验不成功。

kk_lee69 发表于 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

kk_lee69 发表于 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
页: [1] 2
查看完整版本: au3如何将excel绿三角的字符列转换为数值列?