Terimakasih pencerahannya.

Walau jujur harus baca pelan-pelan agar tidak tersesat.

Thanks

-zainul-

 

From: [email protected] [mailto:[email protected]]
On Behalf Of Kid Mr.
Sent: Tuesday, August 14, 2012 11:16 PM
To: [email protected]
Subject: Re: [belajar-excel] Problem dengan TRANSPOSE Matrix

 

  

Ops... ternyata belum lengkap, kuatir bisa jadi salah tangkap...

Coba perhatikan baris berikut (pada posting sebelumnya) :
"Susunan rujukan dalam nama range, memanfaatkan fungsi Index dengan input
berupa array data hasil penjumlahan (atau concatenate di atas) untuk
index_baris diisi 0 (jika 1 dimensi vertikal) atau index_kolom diisi 0 (jika
1 dimensi horisontal)."

Baris ini sekedar iklan fungsi Index loh, jadi jangan terus dianggap harus
alias kaku harus menggunakannya. Karena bahasan kondisinya hanya ada 2
bukan.

Jadi, untuk penggunaan Index( ranges kosong + formula transformasi , 0 )
bisa saja hanya dengan susunan :
ranges kosong + formula transformasi 

Kemudian, dalam formula penyusun ranges kosong, digunakan fungsi Offset. Ini
juga tidak mutlak harus dengan fungsi Offset.
Alasan penggunaan fungsi Offset pada posting lalu disebabkan karena telah
digunakannya fungsi Indirect yang bersifat volatile. Sekalian ada fungsi
yang volatile, maka pakai juga fungsi volatile lain bernama Offset.
Sebenarnya bisa juga disusun dengan fungsi Index yang tidak bersifat
volatile dengan bunyi :
=$d$1:Index( $d:$d , $g$2 )

Maaf atas ketidak nyamanan ini... semoga belum ada yang sampai tersesat...

Wassalam,
Kid.

2012/8/14 Kid Mr. <[email protected]>

Mas Zainul,

Index menghasilkan rujukan kesebuah item array berdasarkan index_baris dan
index_kolom yang ditetapkan.
Artinya, hasilnya pasti 1 item array pada kondisi diatas.
Coba cek dengan Rows( nama_range ), bila perlu cek juga dengan Columns(
nama_range )
pada sebuah nama_range yang dirujuk dengan formula index yang sudah tertentu
nilai index_baris dan index_kolom nya.

Sebuah nama range adalah sebuah variabel. Bisa jadi tipenya adalah range,
array atau tipe data skalar lain seperti string atau double.
Sebuah nama range dengan rujukan index seperti dijelaskan diatas, tipenya
bukanlah sebuah array.

berbeda halnya ketika ada sebuah blok array (blok cells yang diisi array),
maka Excel akan mengkalkulasi setiap item array dalam blok tersebut sesuai
dengan item-item array dalam input parameternya.

Sederhananya, nama range hanya menyimpan sebuah nilai akhir dari rujukan
yang diberikan (bisa berupa array, object range, nilai skalar tergantung
bentuk rujukan), sedangkan kalkulasi Excel pada array blok adalah selalu
bertipe array dengan input berupa array juga.

Sepertinya, setelah ini yang ditanyakan bisa jadi 'lalu bagaimana supaya
bisa menyimpan hasil transformasi dimensi table menjadi sebuah array 1
dimensi'
Tentu dengan memperhatikan kalimat yang di-biru di atas, maka akan terbayang
kuncinya.
Sederhananya, buat sebuah nama range, yang merujuk ke suatu ranges 1 dimensi
yang kosong (karena targetnya ingin jadi array 1 dimensi bukan), kemudian
tambahkan dengan array hasil kalkulasi transformasi tabel.
Syarat dan ketentuannya :
ranges 1 dimensi yang kosong tadi harus terjaga dari proses delete dan tidak
pernah terisi.

Kondisinya :
>> Jika tabel yang ditransformasi memiliki tipe data numerik seluruhnya,
maka jumlahkan dengan ranges kosong tersebut

>> Jika tabel yang ditransformasi ada yang bertipe string, maka lakukan
concatenate (dengan operator &) terhadap ranges kosong tersebut.

Susunan rujukan dalam nama range, memanfaatkan fungsi Index dengan input
berupa array data hasil penjumlahan (atau concatenate di atas) untuk
index_baris diisi 0 (jika 1 dimensi vertikal) atau index_kolom diisi 0 (jika
1 dimensi horisontal).

Pakai contoh saja ya...
1. Data seluruhnya bertipe numerik, maka nanti akan menggunakan operator
penjumlahan (+).
2. Array formula Index untuk transformasi tabel yang telah Anda susun adalah
:


=INDEX($B$2:$C$5,ROUND(ROW(INDIRECT("1:"&$G$2))/2,0),IF(MOD(ROW(INDIRECT("1:
"&$G$2)),2),1,2))

3. Orientasi hasil adalah 1 dimensi array vertikal (karena pakai Row pada
formula Anda)
4. Jumlah baris hasil sudah dikalkulasi dan terseimpan di cell G2 (hijau)
5. Maka membutuhkan sebuah ranges 1 dimensi vertikal yang kosong (misal di
kolom D, mulai D1 dengan jumlah baris sebanyak nilai G2) yang bisa disusun
dengan fungsi Offset :
=Offset( $d$1 , 0 , 0 , $g$2 , 1 )
6. Susunan array hasil akan terbentuk dengan formula :
=Offset( $d$1 , 0 , 0 , $g$2 , 1 )  +
INDEX($B$2:$C$5,ROUND(ROW(INDIRECT("1:"&$G$2))/2,0),IF(MOD(ROW(INDIRECT("1:"
&$G$2)),2),1,2))
7. Susunan tersebut akan disimpan dalam sebuah nama range yang harus berupa
array, maka dibutuhkan fungsi Index. Orientasi vertikal maka index_baris
diisi 0, dan rujukan nama range nantinya akan berbentuk :
=Index(  Offset( $d$1 , 0 , 0 , $g$2 , 1 )  +
INDEX($B$2:$C$5,ROUND(ROW(INDIRECT("1:"&$G$2))/2,0),IF(MOD(ROW(INDIRECT("1:"
&$G$2)),2),1,2))    ,  0  )
8. Buat nama range dan isi dengan rujukan formula no 7 di atas, kemudian
simpan workbook.
9. Cek jumlah baris nama range (sekalian jumlah kolomnya deh) dengan fungsi
Rows dan Columns 
=Rows( nama_rangenya )
=Columns( nama_rangenya )
10. Coba dipakai oleh fungsi Transpose ? (sebagai array formula dalam array
blok 1 baris x N kolom dimana N adalah sejumlah nilai G2)
=Transpose( nama_rangenya )

Kira-kira demikian ya...
moga-moga gak keliru amat...

Wassalam,
Kid.

2012/8/14 zainul_ulum[at]yahoo[dot]com <[email protected]>

 

  

Be-excelers,

Saya mempunyai formula array untuk merubah matrix 2 kolom menjadi satu kolom
sebagai berikut:
=INDEX($B$2:$C$5,ROUND(ROW(INDIRECT("1:"&$G$2))/2,0),IF(MOD(ROW(INDIRECT("1:
"&$G$2)),2),1,2))

Kemudian formula tersebut saya simpan menjadi "named range" misal _X

Ketika saya melakukan proses TRANSPOSE dari _X:
=TRANSPOSE(_X)
Kenapa hasilnya berbeda ketika saya lakukan proses TRANSPOSE langsung:
=TRANSPOSE(INDEX($B$2:$C$5,ROUND(ROW(INDIRECT("1:"&$G$2))/2,0),IF(MOD(ROW(IN
DIRECT("1:"&$G$2)),2),1,2)))

Contoh detail ada di attachment.

mohon pencerahannya...

wassalam
-zainul-

 

 



<<image001.jpg>>

<<image002.jpg>>

Kirim email ke