jtw 发表于 2013-4-9 10:33:30

在Excel操作时怎样实现上下标的输入【已解决】

本帖最后由 jtw 于 2013-4-9 21:35 编辑

在Excel操作时怎样实现上下标的输入,如10#应该用什么函数将#写成上标,谢谢。

h20040606 发表于 2013-4-9 10:53:24

要求太高了吧。EXCLE主要是用于数据管理的啊

PPTBS 发表于 2013-4-9 10:56:07

现实中 可以用ALT+0177 ALT+0178来实现

jtw 发表于 2013-4-9 10:59:55

VBA是可以实现的,只是不会转成au3

jtw 发表于 2013-4-9 11:20:42

本帖最后由 jtw 于 2013-4-9 11:29 编辑

这段是vba的代码:Sub TEST()
   Columns("A:A").NumberFormatLocal = "@"
   Columns("A:A").TextToColumns DataType:=xlTextFormat, FieldInfo:=Array(1, 2)
   For R = 1 To .End(xlUp).Row
         Cells(R, 1).Characters(Start:=Len(Cells(R, 1)), Length:=1).Font.Superscript = True
   Next
End SubSub Example()
'In Excel
    Dim i As Range, a As Integer, b As Integer
    For Each i In Selection.Cells
      a = VBA.InStr(i.Value, "[")
      b = VBA.InStr(i.Value, "]")
      If a > 0 And b > 0 Then
            i.Characters(a + 1, b - a - 1).Font.Superscript = True
      End If
    Next
End Sub

kevinch 发表于 2013-4-9 20:00:19

提供你的au3代码看下

jtw 发表于 2013-4-9 20:24:48

本帖最后由 jtw 于 2013-4-9 20:27 编辑

#Include <EXCEL.au3>


excelTest()

Func excelTest()
      Dim $row_n=20                                           ;表格行数
      
      $xls = ObjCreate("Excel.Application")                   ; 创建excel应用程序对象
      $xls.visible=0                                          ;0-不显示。1-显示
      $obj_xls=$xls.Workbooks.Add                           ;添加新工作薄

      $xls.DisplayAlerts = False                              ;不提示操作信息
      $obj_xls.Worksheets("Sheet3").Delete                  ;删除Sheet3
      ;$oExcel.Worksheets("Sheet2").Delete                  ;删除Sheet2
      $xls.DisplayAlerts = True                               ;开启提示

      $obj_xls.Worksheets("Sheet1").Activate                      ;激活 Sheet1
      $xls_sup=$obj_xls.WorkSheets(1)                            ;第一个工作表,即Sheet1
      $xls_sup.name="交班记录1"                           ;将sheet1更名"交班记录1"
                $xls_sup1=$obj_xls.WorkSheets(2)                            ;第二个工作表,即Sheet2
      $xls_sup1.name="交班记录2"                           ;将sheet1更名"交班记录2"

      $xls_sup.Cells.VerticalAlignment=-4108                      ;设置垂直对齐方式为居中
      $xls_sup.Cells.HorizontalAlignment=-4108                  ;设置水平对齐方式为居中
      $xls_sup.Range("A1:D1").merge(True)                         ;合并单元格,从A1至D1
      $xls_sup.Cells(1, 1).Value ="交接班记事"               ;置值
      $xls_sup.Rows(1).RowHeight =40                              ;设置第一行高度
      
      With $xls_sup.Range("A1:D1")
                .font.size=16                                       ;设置从A1至D1合并后单元格的字体大小
                .Range("A1:D1").font.bold=True                      ;加黑
                .Range("A1:D1").font.name="楷体_GB2312"             ;设置字体名称
      EndWith
      
;InchesToPoints函数,将英寸转为磅值。
      $xls_sup.Columns(1).ColumnWidth=$obj_xls.Application.InchesToPoints(0.07)   
      $xls_sup.Columns(2).ColumnWidth=$obj_xls.Application.InchesToPoints(0.2)
      $xls_sup.Columns(3).ColumnWidth=$obj_xls.Application.InchesToPoints(0.2)
      $xls_sup.Columns(4).ColumnWidth=$obj_xls.Application.InchesToPoints(0.2)

      $xls_sup.Rows(2).RowHeight =24
      $xls_sup.Cells(2, 1).Value ="序号"
      $xls_sup.Cells(2, 2).Value ="产品罐1"
      $xls_sup.Cells(2, 3).Value ="产品罐2"
      $xls_sup.Cells(2, 4).Value ="产品罐3"
                $xls_sup.Cells(3, 2).Value ="10#";这里的#号怎样变成上标
                $xls_sup.Cells(3, 3).Value ="12#,21#";;这里的#号怎样变成上标
      
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(11).LineStyle=1
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(12).LineStyle=1
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(7).LineStyle=1
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(7).Weight=3
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(8).LineStyle=1
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(8).Weight=3
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(9).LineStyle=1
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(9).Weight=3
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(10).LineStyle=1
      $xls_sup.Range("A2:D"&($row_n+2)).Borders(10).Weight=3
      
      For $i=1 To $row_n
                $xls_sup.Rows($i+2).RowHeight =24
                $xls_sup.Rows($i+2).HorizontalAlignment=-4108
                $xls_sup.Rows($i+2).VerticalAlignment=-4108
                $xls_sup.Cells($i+2, 1).Value =$i
      Next
   
      
      
      $obj_xls.Windows(1).DisplayGridlines=False                ;网格线。true-显示;false-不显示
      $obj_xls.Windows(1).DisplayHeadings = False               ;行号列标。true-显示;false-不显示
         $obj_xls.SaveAs(@WorkingDir&"\test.xls")                  ;另存为test.xls
      $obj_xls.Save                                             ;保存
      $xls.quit                                                 ;over

EndFunc$xls_sup.Cells(3, 2).Value ="10#";这里的#号怎样变成上标
$xls_sup.Cells(3, 3).Value ="12#,21#";;这里的#号怎样变成上标

kevinch 发表于 2013-4-9 20:54:45

$excel=ObjCreate("excel.application")
$excel.visible=True
$wb=$excel.workbooks.add
With $wb.activesheet
        .Cells(3, 2).Value ="10# 111#123333###"
        $n=1
        While StringInStr(.cells(3,2).value,"#",0,1,$n)>0
                .Cells(3, 2).characters(StringInStr(.cells(3,2).value,"#",0,1,$n),1).font.superscript=true
                $n=StringInStr(.cells(3,2).value,"#",0,1,$n)+1
        WEnd
EndWith给个例子你,不过这类操作比较耗时,建议大量操作的话关闭屏幕刷新,完成后再打开

jtw 发表于 2013-4-9 21:30:45

本帖最后由 jtw 于 2013-4-9 21:34 编辑

谢谢楼上的,问题解决了。
页: [1]
查看完整版本: 在Excel操作时怎样实现上下标的输入【已解决】