Page 1 of 2
ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Sep 27, 2012 6:46 pm
by suka
เรียนถามเรื่องสูตรรันตัวเลขที่เซลล์ E4:E7 ต้องการใส่อักษรด้านตัวเลขเหมือนอย่างที่เซลล์ F4:F6
จะปรับสูตรที่เซลล์ำ E4 อย่างไรคะ ขอบคุณค่ะั
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Sep 27, 2012 8:40 pm
by snasui

ลองตามนี้ครับ
ที่ E4 คีย์สูตร
=RIGHT(D4)&LOOKUP(2,1/(Sheet1!$A$3:$A$65536=D4),Sheet1!$B$3:$B$65536)+1
Enter > Copy ลงด้านล่าง
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Sep 28, 2012 12:21 pm
by suka
อาจารย์คะขออภัยค่ะ ใช้คำถามผิดค่ะ
ต้องการให้สูตรที่เซลล์ E4:E9 รันตัวเลขที่เซลล์ B4:B9 ที่มีอักษรนำหน้าตัวเลขน่ะค่ะ
ขออนุญาตถามข้อสงสัยค่ะ
ที่เซลล์ E4:E5 จากสูตรด้านบนอาจารย์แค่เติม RIGHT(D4)& เพิ่มที่สูตรเท่านั้นก็สามารถนำอักษรและตัวเลขจากเซลล์ F4:F5 มาได้ แต่แปลกตรงที่ลองลบข้อมูลที่เซลล์ F4:F5 ออก ตัวเลขที่ดึงมาตรงเซลล์ E4:E5 ทำไมยังอยู่คะ
ขอบคุณค่ะ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Sep 28, 2012 1:12 pm
by bank9597

ทำตัวอย่างคำตอบมาให้ดูดีกว่าครับ คำถามที่ถามมา มันตีความได้หลายแบบมาก
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Sep 28, 2012 2:44 pm
by suka
ขออภัยค่ะ ลืมใส่ตัวอย่างคำตอบค่ะ ตัวอย่างคำตอบที่ต้องการที่คอลัมน์ F ค่ะ
ขอบคุณค่ะ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Sep 28, 2012 2:50 pm
by snasui

ทีเซลล์ E4 คีย์
=LEFT(LOOKUP(2,1/(Sheet1!$A$3:$A$65536=D4),Sheet1!$B$3:$B$65536),LEN(LOOKUP(2,1/(Sheet1!$A$3:$A$65536=D4),Sheet1!$B$3:$B$65536))-4)&RIGHT(LOOKUP(2,1/(Sheet1!$A$3:$A$65536=D4),Sheet1!$B$3:$B$65536),4)+1
Enter > Copy ลงด้านล่าง เพื่อให้ง่ายแล้วควรดึงค่าออกมาก่อนแล้วค่อยใช้ Left, Right เข้าไปจัดการแทนการเขียน Left, Right ครอบเข้าไปในสูตรตามที่ผมเขียนไว้ให้ตามด้านบน
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Sep 28, 2012 4:31 pm
by suka
ขอบคุณค่ะอาจารย์ได้คำตอบตามที่ต้องการเลยค่ะ
สูตรยากมากเลยค่ะ ไม่เข้าใจ Left และ Right กับ -4 ,4 รบกวนอาจารย์พอจะมีลิงค์ให้ศึกษาเพื่อเข้าใจสูตรไหมคะ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Sep 28, 2012 5:09 pm
by snasui
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Sep 28, 2012 7:53 pm
by suka
ขอบคุณมากเลยค่ะอาจารย์
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Wed Oct 10, 2012 7:57 pm
by suka
snasui wrote:
ทีเซลล์ E4 คีย์
=LEFT(LOOKUP(2,1/(Sheet1!$A$3:$A$65536=D4),Sheet1!$B$3:$B$65536),LEN(LOOKUP(2,1/(Sheet1!$A$3:$A$65536=D4),Sheet1!$B$3:$B$65536))-4)&RIGHT(LOOKUP(2,1/(Sheet1!$A$3:$A$65536=D4),Sheet1!$B$3:$B$65536),4)+1
Enter > Copy ลงด้านล่าง เพื่อให้ง่ายแล้วควรดึงค่าออกมาก่อนแล้วค่อยใช้ Left, Right เข้าไปจัดการแทนการเขียน Left, Right ครอบเข้าไปในสูตรตามที่ผมเขียนไว้ให้ตามด้านบน
เรียนถามค่ะ อยากจะใช้สูตรด้านบนนี้รันตัวเลขแต่เกิดปัญหาค่ะ
ที่ชีทฟอร์มบันทึก เซลล์ M3 รันเลขที่เอกสาร สูตรที่เซลล์ B2 ชีทกลุ่มเอกสาร ใช้สูตรตามนี้
=LEFT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),LEN(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536))-4)&RIGHT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),4)+1+E2
พอกดปุ่มบันทึกที่ชีทฟอร์มบันทึก เซลล์ N3 ไม่ได้ค่ะ ( #N/A ) และจะมี Pop Up ขึ้นว่า Run-time error'13' ค่ะ
และโค๊ดแถวนี้ .Range("M3") = .Range("M3") + 1 จะถูกระบายสีเหลืองค่ะ
แต่หากที่ชีทฟอร์มบันทึก เซลล์ M3 รันเลขที่เอกสาร สูตรที่เซลล์ B2 ชีทกลุ่มเอกสาร ใช้สูตรนี้
สูตรที่เซลล์ B2 =LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A3),ข้อมูล!$B$2:$B$65536)+1+E3
ที่ชีทฟอร์มบันทึก เซลล์ N3 ( บิลซื้อสินค้า ) จะใช้ได้เป็นปรกติค่ะ
ขอบคุณค่ะ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Wed Oct 10, 2012 8:13 pm
by snasui

ลอง Code เปลี่ยนเป็นตามด้านล่างครับ
จาก
suka wrote: .Range("M3") = .Range("M3") + 1
เป็น
Code: Select all
If Len(.Range("M3")) = 6 Then
.Range("M3") = Left(.Range("M3"), 2) & Right(.Range("M3"), 4) + 1
Else
.Range("M3") = .Range("M3") + 1
End If
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Oct 11, 2012 1:22 pm
by suka
ขอบคุณค่ะอาจารย์ สูตรนี้ใช้ได้กับการรันตัวเลขที่มีอักษร 2 ตัว นำหน้าตัวเลขค่ะ
ขอถามเพิ่มอีกหนึ่งข้อค่ะ
หากต้องการให้สูตรรันตัวเลขที่มีอักษรนำหน้าแค่ 1 ตัว และกับ ตัวเลขล้วนๆด้วย แบบสูตรเดียวสามารถใช้ได้ทั้งสามแบบเลยค่ะ
ขอบคุณมากๆค่ะ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Oct 11, 2012 1:38 pm
by snasui

ที่ให้ไปคือ Code VBA ไม่ใช่สูตรครับ
จากที่ถามมาลองปรับปรุงมาดูก่อน ติดตรงไหนแล้วค่อยถามกันต่อ Code ที่ให้ไปน่าจะเป็นแนวทางได้แล้วครับ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Oct 11, 2012 4:21 pm
by suka
เรียนอาจารย์ขอความช่วยเหลือค่ะ
โค๊ดด้านล่างนี้รันตัวเลขที่มีอักษรนำหน้า 2 ตัว ตัวอย่างเลขที่รัน VT2008
Code: Select all
If Len(.Range("M3")) = 6 Then
.Range("M3") = Left(.Range("M3"), 2) & Right(.Range("M3"), 4) + 1
Else
.Range("M3") = .Range("M3") + 1
End If
ลองปรับเปลี่ยนโค๊ดเป็นตามด้านล่างนี้ รันตัวเลขที่มีอักษรนำหน้า 1 ตัว ตัวอย่างเลขที่รัน A550106682 สามารถรันได้ค่ะ
Code: Select all
If Len(.Range("M3")) = 10 Then
.Range("M3") = Left(.Range("M3"), 1) & Right(.Range("M3"), 9) + 1
Else
.Range("M3") = .Range("M3") + 1
End If
แต่พอลองเอาโค๊ดเพิ่มเข้าไปกับตามนี้รันไม่ได้แล้วค่ะ และ ยังต้องการรันตัวเลขล้วนด้วยค่ะ
Code: Select all
Sub PasteData()
Dim i As Integer
Dim rs As Range
Dim rt As Range
Application.ScreenUpdating = False
i = Worksheets("ฟอร์มบันทึก").Range("C21")
With Worksheets("Template")
Set rs = .Range(.Range("A2"), .Range("Y" & i + 1))
End With
Set rt = Worksheets("ข้อมูล").Range("A65536").End(xlUp).Offset(1, 0)
If Worksheets("ฟอร์มบันทึก").Range("C21") = True Then
MsgBox "Please check your data. This transaction already recorded."
Exit Sub
End If
If Worksheets("ฟอร์มบันทึก").Range("B5") = "" Then
MsgBox "Your data is empty. Fill your data and click record button again."
Exit Sub
End If
rs.Copy: rt.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Sheets("ฟอร์มบันทึก").Range("D3,F3,B5:B19,D5:D19,E5:F19,L5:L19,N5:N19,N22").ClearContents
With Worksheets("ฟอร์มบันทึก")
If Len(.Range("M3")) = 6 Then
.Range("M3") = Left(.Range("M3"), 2) & Right(.Range("M3"), 4) + 1
Else
.Range("M3") = .Range("M3") + 1
End If
If Len(.Range("M3")) = 10 Then
.Range("M3") = Left(.Range("M3"), 1) & Right(.Range("M3"), 9) + 1
Else
.Range("M3") = .Range("M3") + 1
End If
End With
Application.ScreenUpdating = True
End Sub
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Oct 11, 2012 4:47 pm
by snasui

ลองปรับในช่วงของ If เป็นตามด้านล่างครับ
Code: Select all
If Len(.Range("M3")) = 6 Then
.Range("M3") = Left(.Range("M3"), 2) & Right(.Range("M3"), 4) + 1
ElseIf Len(.Range("M3")) = 10 Then
.Range("M3") = Left(.Range("M3"), 1) & Right(.Range("M3"), 9) + 1
Else
.Range("M3") = .Range("M3") + 1
End If
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Oct 11, 2012 6:00 pm
by suka
Code: Select all
If Len(.Range("M3")) = 6 Then
.Range("M3") = Left(.Range("M3"), 2) & Right(.Range("M3"), 4) + 1
ElseIf Len(.Range("M3")) = 10 Then
.Range("M3") = Left(.Range("M3"), 1) & Right(.Range("M3"), 9) + 1
ElseIf Len(.Range("M3")) = 8 Then
.Range("M3") = Left(.Range("M3"), 0) & Right(.Range("M3"), 8) + 1
Else
.Range("M3") = .Range("M3") + 1
End If
อาจารย์คะรบกวนดูโค๊ดด้านล่างนี้ให้หน่อยนะคะ ทดสอบแล้วสองอันบนใช่ได้แล้วค่ะ แต่โค๊ดด้านล่างนี้ยังใช้ไม่ได้ค่ะ
Code: Select all
ElseIf Len(.Range("M3")) = 8 Then
.Range("M3") = Left(.Range("M3"), 0) & Right(.Range("M3"), 8) + 1
จากไฟล์แนบชีทข้อมูล เซลล์ B6 ตัวเลขสุดท้ายเป็นเลข 55010029 แต่สูตรที่ชีทกลุ่มเอกสาร เซลล์ B3 ดึงตัวเลขมาเป็นเลข 550130 นี้ค่ะ
หากใช้ได้ต้องเป็น 55010030 เลขนี้ค่ะ ยังไม่ได้ตามที่ต้องการค่ะ
ขอบคุณค่ะ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Thu Oct 11, 2012 9:26 pm
by snasui

ไม่จำเป็นต้องใส่เงื่อนไขนั้นเข้าไปครับ เนืองจากถ้านับแล้วไม่ใช่ 10 นับแล้วไม่ใช่ 6 แสดงว่าทั้งหมดเป็นตัวเลข ควรบวกเพิ่มจากค่าเดิมเข้าไปได้เลย นั่นคือเราได้เขียน
เอาไว้แล้ว
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Oct 12, 2012 12:09 pm
by suka
ขอบคุณค่ะอาจารย์ ได้เอาเงื่อนไขนั้นออกแล้วใช้ได้ค่ะ
ขอรบกวนอีกนิดค่ะหากต้องการรันเฉพาะตัวเลข ที่ชีทกลุ่มเอกสารเซลล์ B2 ให้ใช้สูตรตามนี้
=LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A3),ข้อมูล!$B$2:$B$65536)+1+E3 เพื่อดึงตัวเลขจากชีทฟอร์มบันทึก
และถ้าเป็นการรันตัวเลขที่มีอักษรนำหน้าต้องใช้
=LEFT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),LEN(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536))-4)&RIGHT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),4)+1+E2
ใช่ไหมคะ หากต้องการให้สูตรดึงได้ทั้งตัวเลขล้วนและมีอักษรนำหน้าด้วยได้ไหมค่ะ ขอบคุณค่ะ
Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Oct 12, 2012 2:50 pm
by snasui
snasui wrote:หากต้องการให้สูตรดึงได้ทั้งตัวเลขล้วนและมีอักษรนำหน้าด้วยได้ไหมค่ะ
ได้ลองใช้สูตรตามด้านล่างแล้วยังครับ
suka wrote:และถ้าเป็นการรันตัวเลขที่มีอักษรนำหน้าต้องใช้
=LEFT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),LEN(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536))-4)&RIGHT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),4)+1+E2
หากใช้แล้ว ติดปัญหาตรงไหนครับ

Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ
Posted: Fri Oct 12, 2012 3:29 pm
by suka
ได้ลองใช้สูตรตามด้านล่างแล้วค่ะ
snasui wrote:
ได้ลองใช้สูตรตามด้านล่างแล้วยังครับ
suka wrote:และถ้าเป็นการรันตัวเลขที่มีอักษรนำหน้าต้องใช้
=LEFT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),LEN(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536))-4)&RIGHT(LOOKUP(2,1/(ข้อมูล!$D$2:$D$65536=A2),ข้อมูล!$B$2:$B$65536),4)+1+E2
ติดปํญหาเฉพาะที่รันเป็นตัวเลขล้วนๆค่ะ จากเลข 8 ตัว พอรันแล้วเหลือ 6 ตัวตามด้านล่างนี้ค่ะ
suka wrote:จากไฟล์แนบชีทข้อมูล เซลล์ B6 ตัวเลขสุดท้ายเป็นเลข 55010029 แต่สูตรที่ชีทกลุ่มเอกสาร เซลล์ B3 ดึงตัวเลขมาเป็นเลข 550130 นี้ค่ะ
หากใช้ได้ต้องเป็น 55010030 เลขนี้ค่ะ ยังไม่ได้ตามที่ต้องการค่ะ
ขอบคุณค่ะ
และพอกดปุ่มบันทึกที่ชีทฟอร์มบันทึก เซลล์ N3 จะเป็น ( #N/A ) ไม่เป็น ( บิลสินค้า ) ค่ะ