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
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
Fungsi yang Ditentukan Pengguna (UDF) sangat mudah memasang dan gunakan:
ALT-F11 menampilkan jendela VBE
ALT-I
ALT-M membuka modul baru
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:
buka jendela VBE seperti di atas
hapus kode
tutup jendela VBE
Untuk menggunakan UDF dari Excel:
=txet(A1)
Untuk mempelajari lebih lanjut tentang makro secara umum, lihat:
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.
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.
Anda dapat melakukan ini di VBA.
Saya menempatkan sampel Anda di A1, A2, dan A3. Kode di atas menampilkan ini:
Anda kemudian dapat menguraikan bagian pertama dari itu untuk memutuskan tingkat konversi apa yang berlaku.
sumber