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
:D ลองตามนี้ครับ

ที่ 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
:D ทำตัวอย่างคำตอบมาให้ดูดีกว่าครับ คำถามที่ถามมา มันตีความได้หลายแบบมาก

Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ

Posted: Fri Sep 28, 2012 2:44 pm
by suka
ขออภัยค่ะ ลืมใส่ตัวอย่างคำตอบค่ะ ตัวอย่างคำตอบที่ต้องการที่คอลัมน์ F ค่ะ

ขอบคุณค่ะ

Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ

Posted: Fri Sep 28, 2012 2:50 pm
by snasui
:D ทีเซลล์ 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
:D ฟังก์ชั่น Right ดูจากที่นี่ครับ http://office.microsoft.com/th-th/excel ... P010342656
ฟังก์ชั่น Left ดูจากที่นี่ครับ http://office.microsoft.com/th-th/excel ... P010342656
ฟังกชั่น Len ดูจากที่นี่ครับ http://office.microsoft.com/th-th/excel ... P010342656

Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ

Posted: Fri Sep 28, 2012 7:53 pm
by suka
ขอบคุณมากเลยค่ะอาจารย์

Re: ต้องการให้สูตรรันตัวเลขที่มีอักษรนำอยู่ด้านหน้าค่ะ

Posted: Wed Oct 10, 2012 7:57 pm
by suka
snasui wrote::D ทีเซลล์ 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
:D ลอง 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
:D ที่ให้ไปคือ 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
:D ลองปรับในช่วงของ 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
:D ไม่จำเป็นต้องใส่เงื่อนไขนั้นเข้าไปครับ เนืองจากถ้านับแล้วไม่ใช่ 10 นับแล้วไม่ใช่ 6 แสดงว่าทั้งหมดเป็นตัวเลข ควรบวกเพิ่มจากค่าเดิมเข้าไปได้เลย นั่นคือเราได้เขียน

Code: Select all

.Range("M3") = .Range("M3") + 1
เอาไว้แล้ว

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
:D
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 ) ไม่เป็น ( บิลสินค้า ) ค่ะ