pos機(jī)編號(hào)生成

 新聞資訊2  |   2023-07-10 09:38  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)編號(hào)生成,EXCEL數(shù)據(jù)處理VBA代碼自動(dòng)生成太簡(jiǎn)單的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)編號(hào)生成的問題,今天pos機(jī)之家(www.www690aa.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!

本文目錄一覽:

1、pos機(jī)編號(hào)生成

pos機(jī)編號(hào)生成

這一年來,老婆做社區(qū)團(tuán)購上癮了,每周都會(huì)有一大批訂單蜂擁而至,訂單都是在微信群里接龍生成的,送貨時(shí),就遇到了訂單打印的問題,老婆要求我對(duì)訂單進(jìn)行以下處理:

1、分列:把訂單的房號(hào)和貨物清單內(nèi)容分成兩列,方便查閱;

2、排序:把訂單按房號(hào)進(jìn)行排序,方便鄰居來取貨時(shí),快速查詢訂單明細(xì)。

微信接龍?jiān)加唵胃袷?/p>

看到訂單格式,我就思考以下幾個(gè)問題:

1、分列問題:發(fā)現(xiàn)訂單中,房號(hào)與貨物清單之間,有的有空格,有的沒空格;有的有一個(gè)空格,有的有多個(gè)空格;這在EXCEL中手工操作分列處理時(shí),要把沒有空格的加上一個(gè)分隔符,以便有可用的“分隔符號(hào)”供EXCEL軟件識(shí)別;做上述處理后,就可以在EXCEL中做“分列”操作,把訂單數(shù)據(jù)分為三列,序號(hào)1列,房號(hào)1列,貨物清單內(nèi)容1列;

2、排序問題:分列后,要對(duì)訂單數(shù)據(jù)按房號(hào)進(jìn)行升序排序,排序時(shí)發(fā)現(xiàn)問題,房號(hào)2B-4A會(huì)被排在房號(hào)2B-27H的后面,這是因?yàn)镋XCEL判斷的依據(jù)是房號(hào)2B-4A的第4位字符4>房號(hào)2B-27H的第4位字符2,而不是我們以為的4<27;如果要實(shí)現(xiàn)正確的排序,則要在2B-4A中,4的前面補(bǔ)上一個(gè)0,變?yōu)?B-04A;這樣在排序時(shí),2B-04A就會(huì)按照要求排在2B-27H的前面;做上述處理后,排序結(jié)果正確。

3、以上操作都是在EXCEL中手工完成,那么如何用VBA代碼來達(dá)成上述所要的結(jié)果呢,這時(shí)候我求助了ChatGPT。

ChatGPT能幫我們生成代碼,但首先是你的訴求信息要準(zhǔn)確,不會(huì)被誤解,所以我們?cè)诿枋龉δ苄枨髸r(shí),要密切注意表達(dá)的內(nèi)容要做到詳細(xì)并有確定性。

在ChatGPT中請(qǐng)求生成VBA代碼時(shí),我的請(qǐng)求表述如下:

幫我寫一段VBA代碼,在EXCEL表中,在A列的每個(gè)單元格中,從右邊開始找到第一個(gè)英文字母,在這個(gè)英文字母后插入符號(hào)“,”;將A列中包含的空格全部刪除;將A列內(nèi)容進(jìn)行“分列”,“分隔符號(hào)”為”.”,將分列后的內(nèi)容寫入右側(cè)相鄰的單元格;再將C列內(nèi)容進(jìn)行“分列”,“分隔符號(hào)“為”,”,將分列后的內(nèi)容寫入C列和D列;如果C列單元格中的字符位數(shù)為5,但左起第1個(gè)字符不是“1“,則尋找單元格中的“-“符號(hào),在”-“符號(hào)后面插入一個(gè)”0“; 如果C列單元格中的字符位數(shù)為4,則尋找單元格中的“-“符號(hào),在”-“符號(hào)后面插入一個(gè)”0“;對(duì)C列內(nèi)容按升序進(jìn)行排序,對(duì)B列內(nèi)容按1、2、3等差數(shù)列重新進(jìn)行編號(hào);所有有內(nèi)容的單元格加上框線。

由于ChatGPT一次處理內(nèi)容篇幅有限,上述300個(gè)字的訴求內(nèi)容,ChatGPT處理到一半就會(huì)中止,無法完成后半部分的代碼生成,為了讓ChatGPT能生成完成的代碼,我把上述300字的訴求內(nèi)容分為兩段來發(fā)送:

第一段,

幫我寫一段VBA代碼,在EXCEL表中,在A列的每個(gè)單元格中,從右邊開始找到第一個(gè)英文字母,在這個(gè)英文字母后插入符號(hào)“,”;將A列中包含的空格全部刪除;將A列內(nèi)容進(jìn)行“分列”,“分隔符號(hào)”為”.”,將分列后的內(nèi)容寫入右側(cè)相鄰的單元格;再將C列內(nèi)容進(jìn)行“分列”,“分隔符號(hào)“為”,”,將分列后的內(nèi)容寫入C列和D列;

第二段,

幫我寫一段VBA代碼,在EXCEL表中,如果C列單元格中的字符位數(shù)為5,但左起第1個(gè)字符不是“1“,則尋找單元格中的“-“符號(hào),在”-“符號(hào)后面插入一個(gè)”0“; 如果C列單元格中的字符位數(shù)為4,則尋找單元格中的“-“符號(hào),在”-“符號(hào)后面插入一個(gè)”0“;對(duì)C列內(nèi)容按升序進(jìn)行排序,對(duì)B列內(nèi)容按1、2、3等差數(shù)列重新進(jìn)行編號(hào);所有有內(nèi)容的單元格加上框線。

大家看到,上述請(qǐng)求內(nèi)容,相比EXCEL軟件手工處理流程,增加了以下細(xì)節(jié):

1、由于房號(hào)和后面清單內(nèi)容之間時(shí)常會(huì)包含多個(gè)空格,如果以空格為分隔符號(hào),分列時(shí),VBA代碼會(huì)將多個(gè)空格視作多個(gè)分隔符號(hào),最終會(huì)將內(nèi)容分隔為多個(gè)空白列,這并不是我們所想的結(jié)果,因此需要先清除訂單內(nèi)容中的全部空格后,才不會(huì)出現(xiàn)上述錯(cuò)誤;

訂單內(nèi)容清除空格的代碼如下:

Cells(i, "A").Value = Replace(Cells(i, "A").Value, " ", "")

2、清除全部空格后,你就會(huì)發(fā)現(xiàn)房號(hào)與貨物清單之間缺少分隔符號(hào),無法實(shí)現(xiàn)分列操作,那么就需要在房號(hào)后面補(bǔ)上分隔符號(hào),譬如“:”,這樣就可以實(shí)現(xiàn)讓系統(tǒng)自動(dòng)進(jìn)行房號(hào)與貨物清單的分列操作;請(qǐng)求內(nèi)容為:從右邊開始找到第一個(gè)英文字母,在這個(gè)英文字母后插入符號(hào)“;”.

代碼如下:

Do While letterPos > 0

If Mid(cellValue, letterPos, 1) Like "[A-Za-z]" Then

Cells(i, "A").Value = Left(cellValue, letterPos) & ":" & Right(cellValue, Len(cellValue) - letterPos)

Exit Do

End If

letterPos = letterPos – 1

Loop

3、分列后,在對(duì)房號(hào)排序時(shí)發(fā)現(xiàn),單數(shù)字房號(hào),在進(jìn)行降序排序時(shí)會(huì)排到雙數(shù)字房號(hào)后面,譬如2B-4A會(huì)被排序2B-27H的后面,這樣就需要在4A前插入一個(gè)0。用代碼的處理就是先判斷房號(hào)的字符位數(shù),如果字符位數(shù)為5,就是左起第一個(gè)英文字母前加”0”;考慮到有格式如1-4B的房號(hào),要再加個(gè)條件“左起第一個(gè)字母不為1”;那就是,如果房號(hào)字符位數(shù)為5,左起第一個(gè)字母不為1,就在-符號(hào)后面加0;還有一個(gè)條件,如果格式如1-4B的房號(hào),就是,如果房號(hào)字符位數(shù)為4,左起第一個(gè)字母為1,就在-符號(hào)后面加0;

代碼如下:

For i = 1 To Cells(Rows.count, "C").End(xlUp).Row

'如果字符位數(shù)為 5 且左起第 1 個(gè)字符不是 "1"

If Len(Cells(i, "C").Value) = 5 And Left(Cells(i, "C").Value, 1) <> "1" Then

'尋找單元格中的 "-" 符號(hào)

Cells(i, "C").Value = Replace(Cells(i, "C").Value, "-", "-0")

'如果字符位數(shù)為 4

ElseIf Len(Cells(i, "C").Value) = 4 Then

'尋找單元格中的 "-" 符號(hào)

Cells(i, "C").Value = Replace(Cells(i, "C").Value, "-", "-0")

End If

Next i

其它的如排序、編序號(hào)、單元格加框線的操作都不難,這里不再贅述。

將訴求內(nèi)容發(fā)送給ChatGPT獲得自動(dòng)生成的VBA代碼

將訴求內(nèi)容發(fā)給ChatGPT,ChatGPT自動(dòng)生成代碼,再把生成的代碼張貼到EXCEL的開發(fā)工具菜單中的VBA對(duì)話框中,點(diǎn)擊運(yùn)行按鈕,EXCEL自動(dòng)進(jìn)行數(shù)據(jù)處理,生成我們希望得到的結(jié)果。

原始訂單數(shù)據(jù)經(jīng)VBA處理后提到的結(jié)果符合訴求

附錄:完整代碼如下,

Sub ModifyData()

Dim lastRow As Long

lastRow = Cells(Rows.count, "A").End(xlUp).Row

Dim i As Long

For i = 1 To lastRow

' 從右邊開始找到第一個(gè)英文字母,在這個(gè)英文字母后插入符號(hào)":"

Dim cellValue As String

cellValue = Cells(i, "A").Value

Dim letterPos As Integer

letterPos = Len(cellValue)

Do While letterPos > 0

If Mid(cellValue, letterPos, 1) Like "[A-Za-z]" Then

Cells(i, "A").Value = Left(cellValue, letterPos) & ":" & Right(cellValue, Len(cellValue) - letterPos)

Exit Do

End If

letterPos = letterPos - 1

Loop

' 將A列中包含的空格全部刪除

Cells(i, "A").Value = Replace(Cells(i, "A").Value, " ", "")

' 將A列內(nèi)容進(jìn)行"分列","分隔符號(hào)"為".",將分列后的內(nèi)容寫入右側(cè)相鄰的單元格

Dim arr() As String

arr = Split(Cells(i, "A").Value, ".")

Cells(i, "B").Value = arr(0)

Cells(i, "C").Value = arr(1)

' 再將C列內(nèi)容進(jìn)行"分列","分隔符號(hào)"為":",將分列后的內(nèi)容寫入C列和D列

arr = Split(Cells(i, "C").Value, ":")

Cells(i, "C").Value = arr(0)

Cells(i, "D").Value = arr(1)

Next i

'遍歷 C 列的每個(gè)單元格

For i = 1 To Cells(Rows.count, "C").End(xlUp).Row

'如果字符位數(shù)為 5 且左起第 1 個(gè)字符不是 "1"

If Len(Cells(i, "C").Value) = 5 And Left(Cells(i, "C").Value, 1) <> "1" Then

'尋找單元格中的 "-" 符號(hào)

Cells(i, "C").Value = Replace(Cells(i, "C").Value, "-", "-0")

'如果字符位數(shù)為 4

ElseIf Len(Cells(i, "C").Value) = 4 Then

'尋找單元格中的 "-" 符號(hào)

Cells(i, "C").Value = Replace(Cells(i, "C").Value, "-", "-0")

End If

Next i

'對(duì) C 列內(nèi)容按升序進(jìn)行排序

With Range("C1", Cells(Rows.count, "C").End(xlUp))

.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlNo

End With

'對(duì) B 列內(nèi)容按 1、2、3 等差數(shù)列重新進(jìn)行編號(hào)

For i = 1 To Cells(Rows.count, "B").End(xlUp).Row

Cells(i, "B").Value = i

Next i

'所有有內(nèi)容的單元格加上框線

Dim rng As Range

Dim ws As Worksheet

Set ws = ThisWorkbook.ActiveSheet

For Each rng In ws.UsedRange

If Len(rng.Value) > 0 Then

rng.Borders.LineStyle = xlContinuous

End If

Next rng

End Sub

以上就是關(guān)于pos機(jī)編號(hào)生成,EXCEL數(shù)據(jù)處理VBA代碼自動(dòng)生成太簡(jiǎn)單的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)編號(hào)生成的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.www690aa.com/newsone/82735.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。