:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

copi and paste

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sna
Silver
Silver
Posts: 694
Joined: Tue May 05, 2020 8:18 am
Excel Ver: Excel 365

copi and paste

#1

Post by sna »

hi there

I need your help with vba to transform to convert values from one currency to another currency with division of exchange rate in AD2.
I also need to extract name in column A to column AE like example.how to merge my code into one with simplified vba

Code: Select all

Sub Combinetabs()
Sheets.Add
ActiveSheet.Name = "New Sheet"
Set Dsheet = ActiveSheet
For Each ws In Sheets
    If ws.Name <> "New Sheet" Then
        lr = ws.Cells(Rows.Count, "A").End(xlUp).Row
        lr2 = Dsheet.Cells(Rows.Count, "A").End(xlUp).Row
        If lr2 = 1 Then lr2 = 0
        ws.Rows("1:" & lr).Copy Dsheet.Range("A" & lr2 + 1)
    End If
    
Next ws

End Sub

Sub Transform()

    Set sh = ThisWorkbook.Sheets("New Sheet")
    
    lr = sh.Cells(Rows.Count, "B").End(xlUp).Row
   
    usdRate = sh.Range("AD2").Value

    For i = 2 To lr
        
            With sh
            If .Cells(i, "F").Value = "KHR" Then
                .Range("D" & i).Value = .Range("D" & i).Value / usdRate
                .Range("E" & i).Value = .Range("E" & i).Value / usdRate
                .Range("N" & i).Value = .Range("N" & i).Value / usdRate
                .Range("P" & i).Value = .Range("P" & i).Value / usdRate
                .Range("Q" & i).Value = .Range("Q" & i).Value / usdRate
                .Range("R" & i).Value = .Range("R" & i).Value / usdRate
                .Range("T" & i).Value = .Range("T" & i).Value / usdRate
                .Range("U" & i).Value = .Range("U" & i).Value / usdRate
                .Range("W" & i).Value = .Range("W" & i).Value / usdRate
                .Range("X" & i).Value = .Range("X" & i).Value / usdRate
                .Range("Y" & i).Value = .Range("Y" & i).Value / usdRate
                .Range("Z" & i).Value = .Range("Z" & i).Value / usdRate
            End If
            End With
      Next

End Sub

thx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30905
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: copi and paste

#2

Post by snasui »

The example code is below.

Code: Select all

Sub combinetabs()
    Sheets.Add before:=Sheets(1)
    ActiveSheet.Name = "New Sheet"
    Set Dsheet = ActiveSheet
    For Each ws In Sheets
        If ws.Name <> "New Sheet" Then
            lr = ws.Cells(Rows.Count, "A").End(xlUp).Row
            lr2 = Dsheet.Cells(Rows.Count, "A").End(xlUp).Row
            If lr2 = 1 Then lr2 = 0
            ws.Rows("1:" & lr).Copy Dsheet.Range("A" & lr2 + 1)
        End If
    Next ws
    With Worksheets("New Sheet")
        lr = .Cells(Rows.Count, "B").End(xlUp).Row
        usdRate = .Range("AD2").Value
        If IsEmpty(usdrange) Then
            MsgBox "Please enter USD rate in cell AD2.", vbCritical
            Exit Sub
        End If
        For i = 2 To lr
            If .Cells(i, "F").Value = "KHR" Then
                .Range("D" & i).Value = .Range("D" & i).Value / usdRate
                .Range("E" & i).Value = .Range("E" & i).Value / usdRate
                .Range("N" & i).Value = .Range("N" & i).Value / usdRate
                .Range("P" & i).Value = .Range("P" & i).Value / usdRate
                .Range("Q" & i).Value = .Range("Q" & i).Value / usdRate
                .Range("R" & i).Value = .Range("R" & i).Value / usdRate
                .Range("T" & i).Value = .Range("T" & i).Value / usdRate
                .Range("U" & i).Value = .Range("U" & i).Value / usdRate
                .Range("W" & i).Value = .Range("W" & i).Value / usdRate
                .Range("X" & i).Value = .Range("X" & i).Value / usdRate
                .Range("Y" & i).Value = .Range("Y" & i).Value / usdRate
                .Range("Z" & i).Value = .Range("Z" & i).Value / usdRate
            End If
          Next
    End With
End Sub
sna
Silver
Silver
Posts: 694
Joined: Tue May 05, 2020 8:18 am
Excel Ver: Excel 365

Re: copi and paste

#3

Post by sna »

thanks
One more i need your help with code to add to the previous to get ID name in column AC without writing formula as in attach


thanks
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30905
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: copi and paste

#4

Post by snasui »

:D The example code is below.

Code: Select all

Sub combinetab()
    Sheets.Add before:=Sheets(1)
    ActiveSheet.Name = "New Sheet"
    Set Dsheet = ActiveSheet
    For Each ws In Sheets
        If ws.Name <> "New Sheet" Then
            lr = ws.Cells(Rows.Count, "A").End(xlUp).Row
            lr2 = Dsheet.Cells(Rows.Count, "A").End(xlUp).Row
            If lr2 = 1 Then lr2 = 0
            ws.Rows("1:" & lr).Copy Dsheet.Range("A" & lr2 + 1)
        End If
    Next ws

     usdrate = Sheet1.Range("AD1").Value
        If IsEmpty(usdrate) Then
            MsgBox "Please enter USD rate ", vbCritical
            Exit Sub
        End If
    
    With Worksheets("New Sheet")
        lr = .Cells(Rows.Count, "B").End(xlUp).Row
        idn = ""
        For i = 2 To lr
            If IsNumeric(VBA.Left(.Cells(i, "a"), 4)) And IsEmpty(.Cells(i, "b").Value) Then
                idn = .Cells(i, "a").Value
            End If
            
            If .Cells(i, "F").Value = "KHR" Then
                .Range("D" & i).Value = .Range("D" & i).Value / usdrate
                .Range("E" & i).Value = .Range("E" & i).Value / usdrate
                .Range("N" & i).Value = .Range("N" & i).Value / usdrate
                .Range("P" & i).Value = .Range("P" & i).Value / usdrate
                .Range("Q" & i).Value = .Range("Q" & i).Value / usdrate
                .Range("R" & i).Value = .Range("R" & i).Value / usdrate
                .Range("T" & i).Value = .Range("T" & i).Value / usdrate
                .Range("U" & i).Value = .Range("U" & i).Value / usdrate
                .Range("W" & i).Value = .Range("W" & i).Value / usdrate
                .Range("X" & i).Value = .Range("X" & i).Value / usdrate
                .Range("Y" & i).Value = .Range("Y" & i).Value / usdrate
                .Range("Z" & i).Value = .Range("Z" & i).Value / usdrate
            End If
            If Not IsEmpty(.Range("ab" & i).Value) Then
                .Range("ac" & i).Value = idn
            End If
          Next
    End With
  
End Sub
sna
Silver
Silver
Posts: 694
Joined: Tue May 05, 2020 8:18 am
Excel Ver: Excel 365

Re: copi and paste

#5

Post by sna »

Thanks so much 🙏
Post Reply