之前給大家分享了DeepSeek的使用方法,有粉絲反饋用它來寫VBA代碼真的太方便了,白嫖同事一杯咖啡,3分鐘就搞定了!

其實使用DeepSeek來寫代碼非常的簡單,我們只需要清楚的告訴DeepSeek你想要做什么,你的需求是什么,想要實現(xiàn)什么樣的效果,總之就是提問的方法很重,要學會問問題,才能解決問題,也是需要稍微懂點Excel的

一、DeepSeek代碼生成

如下圖就是我們對DeepSeek的提問,大家可以仿照我的問題方式來做提問

打開網易新聞 查看精彩圖片

目的:可否幫我使用VBA宏編寫一個自定義函數,函數的名稱為SumColor

實現(xiàn)的效果:要求能實現(xiàn)根據單元格背景色求和

函數參數要求:函數參數有2個,第一參數選中帶有背景色的1個單元格,將單元格的背景色作為求和的條件,第二參數需要選擇帶有背景色的數據區(qū)域 對這個區(qū)域根據顏色求和

以上就是我的提問方式,當然如果你有更多的要求,盡量描述詳細,要求越詳細DeepSeek給出的結果越準確,

DeepSeek給出了如下代碼,代碼也是完成正確的,大家可以試一下

Function SumColor(rngCriteria As Range, rngSum As Range) As Double

Dim criteriaColor As Long

Dim cell As Range

Dim totalSum As Double

If rngCriteria.Count > 1 Then

SumColor = CVErr(xlErrValue)

Exit Function

End If

criteriaColor = rngCriteria.Interior.Color

totalSum = 0

For Each cell In rngSum

If cell.Interior.Color = criteriaColor Then

If IsNumeric(cell.Value) Then

totalSum = totalSum + cell.Value

End If

End If

Next cell

SumColor = totalSum

End Function

二、使用方式

想要使用VBA代碼,需要在【開發(fā)工具】把代碼粘貼到Excel的VB編輯器中的操作步驟如下

打開網易新聞 查看精彩圖片

點擊【開發(fā)工具】找到【Visual Basic】然后在左側點擊空白的區(qū)域,點擊鼠標右鍵找到【插入】選擇【模塊】在新建的模塊中粘貼代碼即可

如果你是自定義的函數,就直接寫等于號,填寫函數名稱

如果你是自定義的宏程序,就需要在【發(fā)開工具】中點擊【宏】找到宏名稱來運行宏

跟大家分享幾個常用代碼,也別找AI來一個一個問了,直接復制粘貼就能用啦

三、自動生成目錄

這個代碼可以實現(xiàn)自動生成目錄,并且在每個工作表的坐上方都添加一個返回目錄的按鈕

Sub CreateWorksheetIndex()

Dim ws As Worksheet

Dim indexSheet As Worksheet

Dim i As Integer

Dim shp As Shape

Dim hyperlinkAddr As String

On Error Resume Next

Set indexSheet = Worksheets("目錄")

If indexSheet Is Nothing Then

Set indexSheet = ThisWorkbook.Sheets.Add(Before:=ThisWorkbook.Sheets(1))

indexSheet.Name = "目錄"

End If

On Error GoTo 0

indexSheet.Cells.ClearContents

indexSheet.Cells(1, 1).Value = "

i = 2

For Each ws In ThisWorkbook.Worksheets

If ws.Name <> indexSheet.Name Then

indexSheet.Hyperlinks.Add Anchor:=indexSheet.Cells(i, 1), Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name

Set shp = ws.Shapes.AddShape(msoShapeRectangle, 10, 10, 80, 20)

shp.TextFrame.Characters.Text = "返回目錄"

hyperlinkAddr = "'" & indexSheet.Name & "'!A1"

ws.Hyperlinks.Add Anchor:=shp, Address:="", SubAddress:=hyperlinkAddr

i = i + 1

End If

Next ws

End Sub

四、圖片批量插入Excel

這個代碼可以將文件夾中的圖片提取名稱并且批量的插入到Excel表格中,只需要更改代碼中的

C:\Users\yh\Desktop\演示圖片\

替換為你的文件地址即可

Sub InsertPicturesAndNames()

Dim folderPath As String

Dim fileName As String

Dim ws As Worksheet

Dim rowIndex As Long

Dim pic As Picture

Dim namePart As String

folderPath = "C:\Users\yh\Desk

If Dir(folderPath, vbDirectory) = "" Then

MsgBox "指定的文件夾不存在,請檢查路徑。"

Exit Sub

End If

Set ws = ActiveSheet

rowIndex = 1

fileName = Dir(folderPath & "*.jpg")

Do While fileName <> ""

namePart = Left(fileName, InStrRev(fileName, ".") - 1)

ws.Cells(rowIndex, 1).Value = namePart

Set pic = ws.Pictures.Insert(folderPath & fileName)

With pic

.Left = ws.Cells(rowIndex, 2).Left

.Top = ws.Cells(rowIndex, 2).Top

.Height = 40

.Width = 40

End With

ws.Rows(rowIndex).RowHeight = pic.Height

ws.Columns(2).ColumnWidth = pic.Width / 20

rowIndex = rowIndex + 1

fileName = Dir

Loop

fileName = Dir(folderPath & "*.png")

Do While fileName <> ""

namePart = Left(fileName, InStrRev(fileName, ".") - 1)

ws.Cells(rowIndex, 1).Value = namePart

Set pic = ws.Pictures.Insert(folderPath & fileName)

With pic

.Left = ws.Cells(rowIndex, 2).Left

.Top = ws.Cells(rowIndex, 2).Top

.Height = 40

.Width = 40

End With

ws.Rows(rowIndex).RowHeight = pic.Height

ws.Columns(2).ColumnWidth = pic.Width / 20

rowIndex = rowIndex + 1

fileName = Dir

Loop

fileName = Dir(folderPath & "*.gif")

Do While fileName <> ""

namePart = Left(fileName, InStrRev(fileName, ".") - 1)

ws.Cells(rowIndex, 1).Value = namePart

Set pic = ws.Pictures.Insert(folderPath & fileName)

With pic

.Left = ws.Cells(rowIndex, 2).Left

.Top = ws.Cells(rowIndex, 2).Top

.Height = 40

.Width = 40

End With

ws.Rows(rowIndex).RowHeight = pic.Height

ws.Columns(2).ColumnWidth = pic.Width / 20

rowIndex = rowIndex + 1

fileName = Dir

Loop

MsgBox "圖片和姓名插入完成,行高和列寬已調整。"

End Sub

五、根據顏色計數

這個是自定義了一個名稱為CountColor的函數,用于根據單元格統(tǒng)計顏色,參數有2個,第一參數設置為箱套統(tǒng)計背景色的單元格,第二參數為統(tǒng)計的區(qū)域

Function CountColor(rngCriteria As Range, rngSum As Range) As Long

Dim criteriaColor As Long

Dim cell As Range

Dim countResult As Long

If rngCriteria.Count > 1 Then

CountColor = CVErr(xlErrValue)

Exit Function

End If

criteriaColor = rngCriteria.Interior.Color

countResult = 0

For Each cell In rngSum

If cell.Interior.Color = criteriaColor Then

countResult = countResult + 1

End If

Next cell

CountColor = countResult

End Function

六、數字轉金額大寫

這個是自定義了一個名稱為DXZH的函數,參數只有一個,就是需要轉換的單元格,直接粘貼代碼使用即可

Function DXZH(ByVal MyNumber)

Dim Yuan As String

Dim Jiao As String

Dim Fen As String

Dim Temp As String

Dim DecimalPlace As Integer

Dim Count As Integer

Dim DigitArr As Variant

Dim UnitArr As Variant

Dim StrNumber As String

DigitArr = Array("零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖")

UnitArr = Array("", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟")

If MyNumber < 0 Then

DXZH = "負"

MyNumber = -MyNumber

Else

DXZH = ""

End If

StrNumber = Trim(Str(MyNumber))

DecimalPlace = InStr(StrNumber, ".")

If DecimalPlace > 0 Then

Yuan = Left(StrNumber, DecimalPlace - 1)

Jiao = Mid(StrNumber, DecimalPlace + 1, 1)

Fen = Mid(StrNumber, DecimalPlace + 2, 1)

Else

Yuan = StrNumber

Jiao = "0"

Fen = "0"

End If

If Val(Yuan) > 0 Then

Temp = ""

Count = 1

For i = Len(Yuan) To 1 Step -1

Temp = DigitArr(Val(Mid(Yuan, i, 1))) & UnitArr(Count - 1) & Temp

Count = Count + 1

Next i

Do While InStr(Temp, "零拾") > 0

Temp = Replace(Temp, "零拾", "零")

Loop

Do While InStr(Temp, "零佰") > 0

Temp = Replace(Temp, "零佰", "零")

Loop

Do While InStr(Temp, "零仟") > 0

Temp = Replace(Temp, "零仟", "零")

Loop

Do While InStr(Temp, "零萬") > 0

Temp = Replace(Temp, "零萬", "萬")

Loop

Do While InStr(Temp, "零億") > 0

Temp = Replace(Temp, "零億", "億")

Loop

Do While InStr(Temp, "零零") > 0

Temp = Replace(Temp, "零零", "零")

Loop

Do While Right(Temp, 1) = "零"

Temp = Left(Temp, Len(Temp) - 1)

Loop

If Temp <> "" Then

DXZH = DXZH & Temp & "元"

End If

End If

If Val(Jiao) > 0 Then

DXZH = DXZH & DigitArr(Val(Jiao)) & "角"

ElseIf Val(Fen) > 0 Then

DXZH = DXZH & "零"

End If

If Val(Fen) > 0 Then

DXZH = DXZH & DigitArr(Val(Fen)) & "分"

ElseIf DXZH <> "" Then

DXZH = DXZH & "整"

Else

DXZH = "零元整"

End If

End Function

至此今天分享就完畢了,利用AI工具來寫代碼還是非常方便的,關鍵是要說清楚自己的需求

還有就是WPS表格默認不支持VBA宏,默認支持JS宏,但是我讓AI編寫JS宏總是出現(xiàn)錯誤,看來AI也不是萬能的啊,對這方面的支持還是不行,如你是WPS可以安裝vba庫做支持,就能在WPS中使用VBA代碼了