Excel 2013 - Mendeteksi Format Mata Uang Sel

1

Saya menerima file Excel yang berisi ekstrak prakiraan penjualan. Tidak ada kolom yang secara eksplisit mendefinisikan unit mata uang. Unit mata uang hanya ditunjukkan oleh pemformatan angka (GBP, EUR atau CHF). Adakah yang tahu bagaimana cara mendeteksi format mata uang untuk menerapkan nilai tukar yang sesuai untuk mata uang yang berbeda?

Contoh:

Format Angka yang Ditampilkan / Nomor Aktual dalam Sel

200.000 GBP / 200000

10.000 CHF / 10000

500.000 EUR / 500000

Terima kasih banyak, Tym

Tym Burman
sumber

Jawaban:

1

Coba Fungsi Buatan Pengguna berikut:

Public Function txet(r As Range) As String
    Dim s As String
    s = Replace(r.NumberFormat, Chr(34), "")
    txet = ""
    If Len(s) < 3 Then Exit Function
    s = Right(s, 3)
    txet = s
End Function

enter image description here

Fungsi yang Ditentukan Pengguna (UDF) sangat mudah memasang dan gunakan:

  1. ALT-F11 menampilkan jendela VBE
  2. ALT-I ALT-M membuka modul baru
  3. rekatkan barang-barang di dan tutup jendela VBE

Jika Anda menyimpan buku kerja, UDF akan disimpan bersamanya. Jika Anda menggunakan versi Excel di kemudian 2003, Anda harus menyimpan file sebagai .xlsm daripada .xlsx

Untuk menghapus UDF:

  1. buka jendela VBE seperti di atas
  2. hapus kode
  3. tutup jendela VBE

Untuk menggunakan UDF dari Excel:

=txet(A1)

Untuk mempelajari lebih lanjut tentang makro secara umum, lihat:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

dan

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

dan untuk spesifik tentang UDF, lihat:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Makro harus diaktifkan agar ini berfungsi!

Gary's Student
sumber
Siswa HI Gary, terima kasih banyak telah membuat dan menjelaskan UDF di atas. Jika Anda punya waktu, saya benar-benar ingin memahami apa yang terjadi pada setiap baris, tidak masalah jika Anda tidak. Ini sangat mudah diimplementasikan dan menghasilkan output yang saya cari. Saya menyadari tadi malam bahwa saya tidak menentukan output apa yang saya harapkan untuk dicapai, permintaan maaf untuk itu. Terima kasih, Tym
Tym Burman
0

Anda dapat melakukan ini di VBA.

Sub CheckFormat()
Dim myCell, j, LastRow
   Worksheets("Sheet1").Activate
   LastRow = Cells(Rows.Count, "A").End(xlUp).Row
   For j = 1 To LastRow
     Set myCell = Cells(j, "A")
     Debug.Print myCell.NumberFormat
   Next j
End Sub

Saya menempatkan sampel Anda di A1, A2, dan A3. Kode di atas menampilkan ini:

[$ GBP] #, ## 0.00

[$ CHF] #, ## 0.00

[$ EUR] #, ## 0.00

Anda kemudian dapat menguraikan bagian pertama dari itu untuk memutuskan tingkat konversi apa yang berlaku.

Doug Deden
sumber
Halo Doug, saya membuat file CheckFormat_Test.xlsm dengan angka yang diformat dalam kolom A pada Sheet1 (mulai dari A1). Saya memasukkan modul ke dalam file dan disisipkan dalam kode CheckFormat (). Menjalankan makro sepertinya tidak mengubah angka ke format yang Anda sebutkan di atas. Mungkin ini penting, format input sebenarnya memiliki 2 tempat desimal (mis. 350.000,00 GBP). Terima kasih banyak atas dukungan Anda, tetapi saya terlalu pemula untuk mendiagnosis mengapa ini tidak berhasil, Tym
Tym Burman
Kode sampel saya hanya mengirim output ke Jendela Segera. Itu hanya dimaksudkan untuk menunjukkan cara untuk mendeteksi format sel, tetapi Anda harus memutuskan apa yang harus dilakukan dengan pengetahuan itu. Jawaban dari Gary's Student melakukan pekerjaan yang lebih baik dengan memasukkan hasilnya ke dalam sel di sebelah nilai yang diformat.
Doug Deden