เปลี่ยนระยะเวลาเป็นเครื่องหมายจุลภาคและในทางกลับกันใน UDF


0

ฉันมี Excel UDF นี้เพื่อแยกอักขระที่ไม่ใช่ตัวเลขทั้งหมดออกจากเซลล์ยกเว้นเครื่องหมายมหัพภาคและเครื่องหมายจุลภาค แต่ก่อนที่จะล้างหมายเลขของฉันฉันต้องการเปลี่ยนเครื่องหมายจุลภาคทั้งหมดเป็นจุดและในทางกลับกัน ฉันไม่รู้ว่าจะทำการเปลี่ยนแปลงรหัสนี้ยังไง ขอบคุณ

Function cleannumber(texto As String) As String 
Dim volta As String 
Dim pedaco As String 

volta = "" 
For i = 1 To Len(texto) 
   pedaco = Mid(texto, i, 1) 
   If pedaco >= "0" And pedaco <= "9"  Or pedaco = “,” Or pedaco =”.” Then volta = volta & pedaco 
Next i 
cleannumber = volta 
End Function

คุณกำลังมองหาฟังก์ชั่น Replace (): msdn.microsoft.com/en-us/library/bt3szac5%28v=vs.90%29.aspxหรือไม่
duDE

ฉันสามารถแทรกฟังก์ชั่นนั้นในฟังก์ชั่น udf ของฉันเพื่อเปลี่ยนเครื่องหมายจุลภาคเป็นจุดและผู้แทนก่อนที่จะล้างจำนวนเซลล์ของฉันได้หรือไม่?
Emanuel

เช่นนี้: ช่วงเวลาและเครื่องหมายจุลภาคหายไป
เอ็มมานูเอล

สำหรับการอ้างอิงในอนาคตฟังก์ชันใน VBA ควรส่งคืนบางสิ่งขณะที่รูทีนย่อยควรทำบางสิ่ง ที่นี่คุณมีฟังก์ชั่นการทำทั้งสองอย่าง
Raystafarian

คำตอบ:


1

ก่อนIfแถลงการณ์:

pedaco = Replace(pedaco, ".", "whatever")
pedaco = Replace(pedaco, ",", ".")
pedaco = Replace(pedaco, "whatever", ",")

เช่นนี้ระยะเวลาและเครื่องหมายจุลภาคจะไม่รวมอยู่ในฟังก์ชัน cleannumber (texto As String) As String Dim volta เป็น String Dim pedaco เป็น String volta เป็น String = "" สำหรับ i = 1 ถึง Len (texto) pedaco = Mid (texto, i, 1) pedaco = แทนที่ (pedaco, ".", ",") pedaco = แทนที่ (pedaco, ",", ".") หาก pedaco> = "0" และ pedaco <= "9" หรือ pedaco =“,” หรือpedaço = ”.” จากนั้น volta = volta & pedaco ถัดไป i cleannumber = volta สิ้นสุดฟังก์ชั่นก่อน If:
Emanuel

ตอนนี้ฉันเข้าใจแล้ว! pedaco = แทนที่ (pedaco, ".", "อะไรก็ตาม") pedaco = แทนที่ (pedaco, ",", ".") pedaco = แทนที่ (pedaco, "อะไรก็ตาม", "อะไร", ") Fantastico !!! ขอบคุณมาก
Emanuel

ฉันทำงานได้ดีสำหรับฉัน ... ขอบคุณอีกครั้ง ฉันแค่อยากจะเข้าใจว่าทำไมแปลง 3,789.90 เป็น 3789,90 โดยไม่มีจุด .. ฉันสามารถเพิ่มจุดโดยเปลี่ยนรูปแบบตัวเลขได้ แต่ Id ชอบที่จะเข้าใจว่าทำไมจุดถึงหายไป
Emanuel

@Emanuel ฉันไม่เข้าใจความคิดเห็นของคุณ
นักเรียนของ Gary

กิจวัตรประจำวันของคุณไม่รวมค่า de dot เช่น 3,789.90 ถูกแปลงเป็น 3789,90
Emanuel

0

แก้ไขรหัส:

Function cleannumber(texto As String) As String 
Dim volta As String 
Dim pedaco As String 

volta = "" 
For i = 1 To Len(texto) 
   pedaco = Mid(texto, i, 1) 

   // Add the below line
   pedaco = Replace(pedaco, ",", ".")

   If pedaco >= "0" And pedaco <= "9"  Or pedaco = “,” Or pedaco =”.” Then volta = volta & pedaco 
Next i 
cleannumber="'" & volta
End Function

ขอบคุณ แต่อย่างนั้นนั่นคือ 5,675.90 ถูกแปลงเป็น 5.675.90 ฉันคาดว่า 5,675.90 จะถูกแปลงเป็น 5.675,90
Emanuel

คุณบอกว่าคุณต้องแทนที่ ',' ด้วยจุดเพื่อให้โค้ดด้านบนทำตามที่คุณขอ
AsimRazaKhan

หากคุณต้องการแทนที่จุด '.' เป็นเครื่องหมายจุลภาค ',' จากนั้นในรหัสข้างต้นเปลี่ยนเครื่องหมายจุลภาคด้วยจุดและจุดด้วยเครื่องหมายจุลภาค
AsimRazaKhan

ขอบคุณทุกคนฉันซาบซึ้งในความสนใจ ปัญหาของฉันได้รับการแก้ไขแล้ว!
Emanuel

โอ้แล้วแก้ไขคำตอบของเราและอนุมัติคำตอบที่ถูกต้องสำหรับผู้ใช้รายอื่นหากพบปัญหาเดียวกัน :)
AsimRazaKhan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.