Page 1 of 1
VBA ใส่สูตร (เติมชื่อไฟล์)
Posted: Wed Mar 30, 2022 3:51 pm
by predee16
คือผมต้องการใส่สูตร เติมชื่อ file ที่คอลัมภ์ G2
พบว่าถ้ามีจำนวนแถวข้อมูลมากกว่า 1 แถวขึ้นไป ก็จะได้ชื่อไฟล์ตามต้องการ (ครบตามจำนวนแถว)
แต่ถ้ามี รายการเดียว จะไม่ได้ชื่อไฟล์ (กลายเป็นได้หัวข้อมาแทนที่)
ตัวอย่างตาม ไฟล์แนบครับ
Code: Select all
Sub Test()
Dim lastrow As Long
Range("g2").Formula = "=MID(CELL(""filename""),FIND(""["",CELL(""filename""))+1,FIND(""]"",CELL(""filename""))-FIND(""["",CELL(""filename""))-1)"
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
Range("g2:g" & lastrow).FillDown
End Sub
Re: VBA ใส่สูตร (เติมชื่อไฟล์)
Posted: Wed Mar 30, 2022 4:22 pm
by puriwutpokin
ลองปรับเป็นแบบนี้ดูครับ
ถ้าไม่ได้อย่างไร ใส่โค้ดมาที่ไฟล์ด้วยครับ
Code: Select all
Sub Test()
Dim lastrow As Long
Dim i As Integer
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastrow
Range("g" & i).Formula = "=MID(CELL(""filename""),FIND(""["",CELL(""filename""))+1,FIND(""]"",CELL(""filename""))-FIND(""["",CELL(""filename""))-1)"
Next i
End Sub
Re: VBA ใส่สูตร (เติมชื่อไฟล์)
Posted: Wed Mar 30, 2022 4:33 pm
by predee16
To : k.puriwutpokin ได้ตามต้องการ ขอบคุณมากครับ
Re: VBA ใส่สูตร (เติมชื่อไฟล์)
Posted: Thu Mar 31, 2022 12:13 pm
by predee16
To : k.puriwutpokin ผมได้นำ code ไปดัดแปลงไปใช้งาน แล้วแต่พบว่า code มันจะจับเฉพาะแถวแรก คัดลอกมา
แต่ถ้ามีข้อมูลที่ไม่เหมือนกัน มันไม่เปลี่ยนตามข้อมูล ครับ
อธิบายอาจจะงงหน่อย ผมได้แนบ file ประกอบให้ดูครับ
Code: Select all
Dim lastrow As Long
Dim i As Integer
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastrow
Range("Ad" & i).Formula = "=CONCATENATE(A2,""_"",X2,""_"",LOOKUP(2,1/(LEFT(D2)=LEFT({""C"",""E"",""O""})),{""OWF"",""EMP"",""REF""}))"
'Range("ac" & i).Formula = "=VLOOKUP(AD2,Password!A:M,13)"
Range("ae" & i).Formula = "=CONCATENATE(AD2,""_"",TEXT(C2,""ddmmyyyy""),""_"",AC2,""$"")"
Next i
Re: VBA ใส่สูตร (เติมชื่อไฟล์)
Posted: Thu Mar 31, 2022 12:33 pm
by puriwutpokin
predee16 wrote: Thu Mar 31, 2022 12:13 pm
To : k.puriwutpokin ผมได้นำ code ไปดัดแปลงไปใช้งาน แล้วแต่พบว่า code มันจะจับเฉพาะแถวแรก คัดลอกมา
แต่ถ้ามีข้อมูลที่ไม่เหมือนกัน มันไม่เปลี่ยนตามข้อมูล ครับ
อธิบายอาจจะงงหน่อย ผมได้แนบ file ประกอบให้ดูครับ
Code: Select all
Dim lastrow As Long
Dim i As Integer
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastrow
Range("Ad" & i).Formula = "=CONCATENATE(A2,""_"",X2,""_"",LOOKUP(2,1/(LEFT(D2)=LEFT({""C"",""E"",""O""})),{""OWF"",""EMP"",""REF""}))"
'Range("ac" & i).Formula = "=VLOOKUP(AD2,Password!A:M,13)"
Range("ae" & i).Formula = "=CONCATENATE(AD2,""_"",TEXT(C2,""ddmmyyyy""),""_"",AC2,""$"")"
Next i
ไฟล์ ไม่มีโค้ดครับ และต้องเซฟไฟล์เป็นนามสกุล .xlsm หรือ .xlsb
ปรับเป็น
Code: Select all
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
'For i = 2 To lastrow
Range("ad2:ad" & lastrow).Formula2 = "=CONCATENATE(A2,""_"",X2,""_"",LOOKUP(2,1/(LEFT(D2)=LEFT({""C"",""E"",""O""})),{""OWF"",""EMP"",""REF""}))"
'Range("ac" & i).Formula = "=VLOOKUP(AD2,Password!A:M,13)"
Range("ae2:ae" & lastrow).Formula2 = "=CONCATENATE(AD2,""_"",TEXT(C2,""ddmmyyyy""),""_"",AC2,""$"")"
'Next i
Re: VBA ใส่สูตร (เติมชื่อไฟล์)
Posted: Thu Mar 31, 2022 12:50 pm
by predee16
ส่งไฟล์ .xlsm ให้ครับ
Re: VBA ใส่สูตร (เติมชื่อไฟล์)
Posted: Thu Mar 31, 2022 1:39 pm
by puriwutpokin
puriwutpokin wrote: Thu Mar 31, 2022 12:33 pm
predee16 wrote: Thu Mar 31, 2022 12:13 pm
To : k.puriwutpokin ผมได้นำ code ไปดัดแปลงไปใช้งาน แล้วแต่พบว่า code มันจะจับเฉพาะแถวแรก คัดลอกมา
แต่ถ้ามีข้อมูลที่ไม่เหมือนกัน มันไม่เปลี่ยนตามข้อมูล ครับ
อธิบายอาจจะงงหน่อย ผมได้แนบ file ประกอบให้ดูครับ
Code: Select all
Dim lastrow As Long
Dim i As Integer
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastrow
Range("Ad" & i).Formula = "=CONCATENATE(A2,""_"",X2,""_"",LOOKUP(2,1/(LEFT(D2)=LEFT({""C"",""E"",""O""})),{""OWF"",""EMP"",""REF""}))"
'Range("ac" & i).Formula = "=VLOOKUP(AD2,Password!A:M,13)"
Range("ae" & i).Formula = "=CONCATENATE(AD2,""_"",TEXT(C2,""ddmmyyyy""),""_"",AC2,""$"")"
Next i
ไฟล์ ไม่มีโค้ดครับ และต้องเซฟไฟล์เป็นนามสกุล .xlsm หรือ .xlsb
ปรับเป็น
Code: Select all
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
'For i = 2 To lastrow
Range("ad2:ad" & lastrow).Formula2 = "=CONCATENATE(A2,""_"",X2,""_"",LOOKUP(2,1/(LEFT(D2)=LEFT({""C"",""E"",""O""})),{""OWF"",""EMP"",""REF""}))"
'Range("ac" & i).Formula = "=VLOOKUP(AD2,Password!A:M,13)"
Range("ae2:ae" & lastrow).Formula2 = "=CONCATENATE(AD2,""_"",TEXT(C2,""ddmmyyyy""),""_"",AC2,""$"")"
'Next i
ตามนี้แก้ไขครับ