Jumat, 19 Oktober 2012

[belajar-excel] Digest Number 1856

12 New Messages

Digest #1856
1a
Re: Menghapus data di sheet / refresh data di sheet by "Mr. Kid" nmkid.family@ymail.com
1b
Re: Menghapus data di sheet / refresh data di sheet by "Jodi Y" jodyslexia@rocketmail.com
2a
Re: Mendeteksi keystroke di lembar kerja by "Heru Safrudin" superheruu
2b
Re: Mendeteksi keystroke di lembar kerja by "Mr. Kid" nmkid.family@ymail.com
5a
Re: Tanya: Rekapitulasi data dengan Macro by "rodhy hakim" odhyz83_assasaky

Messages

Thu Oct 18, 2012 8:35 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Asumsi :
>> nama sheet : tsbt
>> header di baris 1 mulai kolom A dan rapat kolomnya (tidak ada kolom
kosong tanpa header)
>> record pertama di baris 2 dan rapat recordnya (tidak ada baris kosong di
antara 2 record)
>> tidak ada teks lain yang rapat dengan tabel

'jika ada kolom lain diluar tabel yang berisi data yang tidak boleh dihapus
sheets("tsbt").range("a1").currentregion.offset(1).delete xlshiftup

'jika seluruh baris bisa dihapus
sheets("tsbt").range("a1").currentregion.offset(1).entirerow.delete

Wassalam,
Kid.

2012/10/19 Jodi Y <jodyslexia@rocketmail.com>

> **
>
>
> Dear,
> master excel macro vba
>
> bagaimana syntax untuk menghapus data di sheet, sehingga saya bisa
> menginsert data terbaru di sheet tsbt. contoh:
>
> TABEL KARYAWAN
> nik nm_krywn jabatan absensi --> 'ini adalah header
> 1202 paul staff hadir --> 'ini adalah isi row1
> 1203 malih staff hadir --> 'ini adalah isi row2
>
> yg ingin saya tanyakan, bagaimana syntax untuk menghapus semua 'isi'
> dengan menggunakan commandbutton di form. tetapi untuk 'header' tdk
> terhapus
>
> Regards,
> Jodi
>
>
>

Fri Oct 19, 2012 2:41 am (PDT) . Posted by:

"Jodi Y" jodyslexia@rocketmail.com

Terima kasih mas Its works.., saya pakai cara kedua denan rekam macro

--- In belajar-excel@yahoogroups.com, aji mumpung <pupung1986@...> wrote:
>
> hai Jodi,
>
> berhubung gak ngasih sample workbook, jadi jawabnya gini aja ya..
>
> buka sebuah module dalam VBA
> Pada module tersebut:
> 1. dekalarasikan beberapa variabel bertipe RANGE untuk menyimpan Header dan
> seluruh data NIK karyawan
> jadai dalam hal ini ada 2 buah variabel
>
> 2. tentukan posisi di mana header tersebut berada, hal ini bisa menggunakan
> fungsi Find yang akan mencari isi dari header
> kira-kira syntaxnya seperti ini:
>
> Set hdInk = Cells.Find("isi_header_yang_dicari")
>
> dengan menggunakan syntax ini maka posisi header akan dicari di mana saja
> (dinamis) selama masih dalam sheet yang sebelumnya sudah ditunjuk, karena
> saya juga tidak tau anda menempatkan header di mana
>
> setelah itu boleh ditambahkan kondisi yang digunakan apakah header tersebut
> ditemukan atau tidak [ini bersifat optional]
>
> 3. setelah tentukan letak data yang pertama, tentunya adalah 1 baris di
> bawah header, untuk ini gunakan fungsi OffSet
>
> 4. tentukan juga letak data yang paling akhir, gunakan End(xlDown)
>
> 5. Gabung point 3 dan 4 di atas dalam 1 line code
> kira-kira seperti ini
>
> set rgInk = range(hdInk.OffSet(1,0),hdInk.end(xlDown)
>
> 6. kan pada point 5 udah ketemu tuh range data yang mau dihapus, jadi
> harusnya dibelakang kode diatas ditambahkan kode seperti ini
>
> .EntireRow Delete
>
> selesai deh bikin listing programnya
>
> 7. Sekarang kita bikin tombolnya
> kembali ke lembar kerja, masukkan shape, atau kalo mau narsis sedikit
> bolehlah masukkan foto ke dalam worksheet tersebut yang jika kita menekan
> foto tersebut maka program akan berjalan
>
> caranya sbb: klik kanan tombol mouse pada shape atau foto yang tadi sudah
> kita masukkan
> pilih Assign Macro
> pilih This WorkBook
> pilih nama prosedur macro yang sudah kita tentukan di awal sebelum point 1
> klik OK
>
> jadilah sebuah program yang anda inginkan
>
> :: Cara lain::
>
> gunakan rekam macro
>
> 1. Pergi ke header data >> macro akan merekam posisi header
> 2. Aktifkan tombol Relative Refference
> 3. panah bawah 1 kali >> macro akan merekam lokasi data pertama
> 4. tekan CTRL + Shift + panah bawah >> macro akan merekam lokasi data
> terakhir dalam mode dinamis
> 5. Delete seluruh baris yang sudah terblok pada point 4
> 6. Matikan proses recording macro
> 7. lihat ke VBE.. anda akan meneumukan listing program yang dibutuhkan
> 8. Assign macro tersebut ke sebuah shape
>
> semoga bermanfaat
>
> wassalam,
>
> -aji mumpung-
>
>
> 2012/10/19 Jodi Y <jodyslexia@...>
>
> > **
> >
> >
> > Dear,
> > master excel macro vba
> >
> > bagaimana syntax untuk menghapus data di sheet, sehingga saya bisa
> > menginsert data terbaru di sheet tsbt. contoh:
> >
> > TABEL KARYAWAN
> > nik nm_krywn jabatan absensi --> 'ini adalah header
> > 1202 paul staff hadir --> 'ini adalah isi row1
> > 1203 malih staff hadir --> 'ini adalah isi row2
> >
> > yg ingin saya tanyakan, bagaimana syntax untuk menghapus semua 'isi'
> > dengan menggunakan commandbutton di form. tetapi untuk 'header' tdk
> > terhapus
> >
> > Regards,
> > Jodi
> >
> >
> >
>

Thu Oct 18, 2012 8:42 pm (PDT) . Posted by:

"Heru Safrudin" superheruu

yang belum saya bisa bagaimana menambahkan datanya Mr. ?
Berikut ini prosedur yg diberikan Mr. :

Public Sub InsertUsingExecute()
Dim sQuery As String
If con Is Nothing Then
MsgBox "No Connection"
Exit Sub
End If
With Sheet3
sQuery = "Insert Into tabel2 ( no_gr,gr_date ) select " & _
"'" & .Range("B2").Value & "'" & "," & "'" & Format$(.Range("B3").Value, "YYYY-MM-DD") & "'"
con.Execute sQuery
End With
End Sub

Apakah prosedur diatas bisa saya pakai, atau otomatis di data Access menyaring data duplicate ?

Maaf & Thanks

----- Original Message -----
From: Mr. Kid
To: belajar-excel@yahoogroups.com
Sent: Friday, October 19, 2012 10:15 AM
Subject: Re: [belajar-excel] Mendeteksi keystroke di lembar kerja

Pakai Excel 2007 ke atas, coba fitur Remove Duplicate.
Pakai Excel versi berapa aja bisa pakai Advaanced Filter centang unique record move to another place.

Bahasa data universal adalah SQL dengan kalimat query.
Dengan query, bisa diambil data uniqque selalu untuk date tertentu dsb.
Sebelum Anda selesai membuka tabel di Access, Excel sudah selesai merefresh data.
Biasanya data Access sampai ratusan ribu bisa di refresh dalam 2 atau 3 detik kurang dibanding copas data tersebut secara langsung, pada komputer yang sama. Dilakukan tanpa membuka Access, cukup tekan tombol di Excel jika ingin dinamis atau cukup tekan refresh data jika di access sudah disediakan sebuah query yang pasti unique dan siap pakai.

Wassalam,
Kid.

2012/10/19 Heru Safrudin <superheruu@gmail.com>

Maaf kalo pertanyaan kurang jelas. Untuk pertanyaan No. 2 maksud saya begini :
misal setiap hari saya update data yaitu Add data harian katakanlah 100 record dari excel ke Ms. Access. Nah supaya data tidak doble/duplicate maka perlu prosedur cek apakah data udah ada di database, hanya yg belum ada di database aja yang di Add

Kalo pake query kayaknya terlalu lama, karena data yg dibaca di database Access jumlahnya ribuan

Demikian Mr, atas semua atensinya disampaikan terima kasih

----- Original Message -----
From: Mr. Kid
To: belajar-excel@yahoogroups.com
Sent: Friday, October 19, 2012 1:45 AM
Subject: Re: [belajar-excel] Mendeteksi keystroke di lembar kerja

Pak Heru,

1. Saya pingin mendeteksi keystroke di lembar kerja, bisakah, bagaimana caranya ?
Misalkan kalo saya tekan Enter maka prosedur tertentu akan dieksekusi
http://www.teachexcel.com/excel-help/excel-how-to.php?i=423869

2. Bagaimana mencari teks di database Ms. Access dari lembar kerja excel
dalam misal mencari teks "I/KP/11/00002" di field NO_GR
>> 1. Buat koneksi ke access ke sebuah dataset yang ada di access melalui excel get external data (import data di xl2003)
>> 2. aktifkan record macro
>> 3. ubah query dalam koneksi ke access tadi dengan menambahkan teks WHERE nama_kolomnya = 'nilai teks dicari'
>> 4. Stop recording
>> 5. ke VBE dan lihat hasil record macro
>> 6. ubah bagian sqlcommandtext hasil reocrding dengan query yang bagian wherenya bisa mengambil nilai dari sebuah cell
>> 7. jalankan macro
>> 8. save

Wassalam,
Kid.

2012/10/18 Heru Safrudin <superheruu@gmail.com>

Dear Mr. Master

Ada 2 pertanyaan :
1. Saya pingin mendeteksi keystroke di lembar kerja, bisakah, bagaimana caranya ?
Misalkan kalo saya tekan Enter maka prosedur tertentu akan dieksekusi
2. Bagaimana mencari teks di database Ms. Access dari lembar kerja excel
dalam misal mencari teks "I/KP/11/00002" di field NO_GR

Terima kasih

Heru Safrudin

_

Thu Oct 18, 2012 8:55 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Tidak bisa Pak,

Langkah pertama adalah bisa membuat koneksi ke ms access melalui fitur
GetExternal Data (xl2007
ke atas) atau Import Data (xl2003).
Coba lihat-lihat
kesini<http://excel-mr-kid.blogspot.com/2011/04/get-external-data-01-introduction.html>
.

Kemudian, setelah bisa membuat sebuah koneksi ke database ms access
tersebut, maka pelajari juga cara mengubah querynya.
Jika pengubahan query ingin diotomasi, hingga inputan di cell tertentu dan
tertenta menjadi batasan data yang harus diambil, maka harus tahu cara
mengubah query dengan macro. Caranya dengan rekam macro seperti posting
yang lalu :
>> 2. aktifkan record macro
>> 3. ubah query dalam koneksi ke access tadi dengan menambahkan teks WHERE
nama_kolomnya = 'nilai teks dicari'
>> 4. Stop recording
>> 5. ke VBE dan lihat hasil record macro
>> 6. ubah bagian sqlcommandtext hasil reocrding dengan query yang bagian
wherenya bisa mengambil nilai dari sebuah cell

Ribet ya ?
coba dulu saja. siapa tahu ribetnya sepadan dengan mangpangatnya atau malah
mangpangatnya yang terlalu banyak jadi terasa gak ribet. :)

Wassalam,
Kid.

2012/10/19 Heru Safrudin <superheruu@gmail.com>

> **
>
>
> **
> yang belum saya bisa bagaimana menambahkan datanya Mr. ?
> Berikut ini prosedur yg diberikan Mr. :
>
> Public Sub InsertUsingExecute()
> Dim sQuery As String
> If con Is Nothing Then
> MsgBox "No Connection"
> Exit Sub
> End If
> With Sheet3
> sQuery = "Insert Into tabel2 ( no_gr,gr_date ) select " & _
> "'" & .Range("B2").Value & "'" & "," & "'" &
> Format$(.Range("B3").Value, "YYYY-MM-DD") & "'"
> con.Execute sQuery
> End With
> End Sub
> Apakah prosedur diatas bisa saya pakai, atau otomatis di data Access
> menyaring data duplicate ?
>
> Maaf & Thanks
>
>
> ----- Original Message -----
> *From:* Mr. Kid <mr.nmkid@gmail.com>
> *To:* belajar-excel@yahoogroups.com
> *Sent:* Friday, October 19, 2012 10:15 AM
> *Subject:* Re: [belajar-excel] Mendeteksi keystroke di lembar kerja
>
>
>
> Pakai Excel 2007 ke atas, coba fitur Remove Duplicate.
> Pakai Excel versi berapa aja bisa pakai Advaanced Filter centang unique
> record move to another place.
>
> Bahasa data universal adalah SQL dengan kalimat query.
> Dengan query, bisa diambil data uniqque selalu untuk date tertentu dsb.
> Sebelum Anda selesai membuka tabel di Access, Excel sudah selesai
> merefresh data.
> Biasanya data Access sampai ratusan ribu bisa di refresh dalam 2 atau 3 detik
> kurang dibanding copas data tersebut secara langsung, pada komputer yang
> sama. Dilakukan tanpa membuka Access, cukup tekan tombol di Excel jika
> ingin dinamis atau cukup tekan refresh data jika di access sudah
> disediakan sebuah query yang pasti unique dan siap pakai.
>
> Wassalam,
> Kid.
>
> 2012/10/19 Heru Safrudin <superheruu@gmail.com>
>
>> **
>>
>>
>> **
>> Maaf kalo pertanyaan kurang jelas. Untuk pertanyaan No. 2 maksud saya
>> begini :
>> misal setiap hari saya update data yaitu Add data harian katakanlah 100
>> record dari excel ke Ms. Access. Nah supaya data tidak doble/duplicate
>> maka perlu prosedur cek apakah data udah ada di database, hanya yg belum
>> ada di database aja yang di Add
>>
>> Kalo pake query kayaknya terlalu lama, karena data yg dibaca di database
>> Access jumlahnya ribuan
>>
>> Demikian Mr, atas semua atensinya disampaikan terima kasih
>>
>>
>>
>> ----- Original Message -----
>> *From:* Mr. Kid <mr.nmkid@gmail.com>
>> *To:* belajar-excel@yahoogroups.com
>> *Sent:* Friday, October 19, 2012 1:45 AM
>> *Subject:* Re: [belajar-excel] Mendeteksi keystroke di lembar kerja
>>
>>
>>
>> Pak Heru,
>>
>> 1. Saya pingin mendeteksi keystroke di lembar kerja, bisakah, bagaimana
>> caranya ?
>> Misalkan kalo saya tekan Enter maka prosedur tertentu akan dieksekusi
>> http://www.teachexcel.com/excel-help/excel-how-to.php?i=423869
>>
>>
>> 2. Bagaimana mencari teks di database Ms. Access dari lembar kerja excel
>> dalam misal mencari teks "I/KP/11/00002" di field NO_GR
>> >> 1. Buat koneksi ke access ke sebuah dataset yang ada di access
>> melalui excel get external data (import data di xl2003)
>> >> 2. aktifkan record macro
>> >> 3. ubah query dalam koneksi ke access tadi dengan menambahkan teks
>> WHERE nama_kolomnya = 'nilai teks dicari'
>> >> 4. Stop recording
>> >> 5. ke VBE dan lihat hasil record macro
>> >> 6. ubah bagian sqlcommandtext hasil reocrding dengan query yang
>> bagian wherenya bisa mengambil nilai dari sebuah cell
>> >> 7. jalankan macro
>> >> 8. save
>>
>> Wassalam,
>> Kid.
>>
>>
>> 2012/10/18 Heru Safrudin <superheruu@gmail.com>
>>
>>> **
>>>
>>>
>>> **
>>> Dear Mr. Master
>>>
>>> Ada 2 pertanyaan :
>>> 1. Saya pingin mendeteksi keystroke di lembar kerja, bisakah, bagaimana
>>> caranya ?
>>> Misalkan kalo saya tekan Enter maka prosedur tertentu akan dieksekusi
>>> 2. Bagaimana mencari teks di database Ms. Access dari lembar kerja excel
>>> dalam misal mencari teks "I/KP/11/00002" di field NO_GR
>>>
>>> Terima kasih
>>>
>>>
>>> Heru Safrudin
>>>
>>>
>>> _
>>>
>>
>>
>
>

Thu Oct 18, 2012 8:56 pm (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Dear Winda,

Mengapa yang dibold tidak terbaca? 
Karena disamping baris kosong pertama pada kolom B masih ada data (masih termasuk lingkup CurrentRegion), sedangkan disamping baris kosong kedua pada kolom B tidak ada data jadi tidak ikut terambil.

Untuk itu perlu sedikit akal untuk menentukan baris akhir yang ada isinya.

Coba lihat macro yang sudah diupdate untuk mengambil baris terakhir yang ada isinya.

Salam,
Hendrik Karnadi

________________________________
From: Winda Miranti <winda_1504@yahoo.co.id>
To: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
Sent: Friday, 19 October 2012, 9:46
Subject: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih


 
Dear Mas Hendrik,

Trimakasi sekali solusi nya mas hendrik kebenaran saya juga lagi menemukan kasus yang sama
tapi hanya ingin sebatas per kolom saja misalnya hanya kolom B, saya coba otak atik tapi debug selalu hehe, bgmn cara membatasinya biar hanya membaca satu kolom saja?
dan saya coba tambahkan data kebawah seperti data telampir, tetapi jika ada baris yg kosong dua kali, data setelah baris kosong yg kedua tersebut tidak terbaca
Mohon pencerahanya mas hendrik :D

Regards,
Winda

________________________________
Dari: hendrik karnadi <hendrikkarnadi@yahoo.com>
Kepada: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
Dikirim: Jumat, 19 Oktober 2012 6:05
Judul: Fw: [belajar-excel] Index Data Beberapa Kolom atau Lebih


 
Sekedar selingan, pake macro.

Salam,
Hendrik Karnadi

----- Forwarded Message -----
From: Mr. Kid <mr.nmkid@gmail.com>
To: belajar-excel@yahoogroups.com
Sent: Thursday, 18 October 2012, 23:47
Subject: Re: [belajar-excel] Index Data Beberapa Kolom atau Lebih


 
1. Untuk cara 2, ada array formula bantu berbunyi : (cell M3)
=MIN(IF(COUNTIF(N$2:N2,$B$3:$F$14)=0,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
Kondisi yang ada baru 1, yaitu bagian CountIF. Belum ada pengkondisian berdasar ada atau tidaknya teks dalam data.
Pengkondisian untuk mengambil cell yang ada datanya saja adalah dengan memeriksa jumlah karakter yang ada di dalam cell tersebut.
( Len($B$3:$F$14) > 0 )

Jadi, 2 kondisi yang harus digunakan adalah :
>> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )
>> ( Len($B$3:$F$14) > 0 )
Keduanya harus terpenuhi, artinya harus dihubungkan dengan operator AND yang setara dengan kegiatan operasi matematis perkalian.
Jadi kedua kondisi akan diekspresikan menjadi :
( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )

Maka bagian CountIF dalam array formula diganti dengan 2 pengkondisian baru ini akan menjadi :
=MIN(IF( ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 ) ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
>> Jangan lupa untuk di-Enter sebagai Array formula dengan CTRL  SHIFT  ENTER <<

2. Menghitung jumlah unique item (seperti cell H2 atau M2)
Formula yang ada :
=SUMPRODUCT(1/COUNTIF(B3:F14,B3:F14))
Ketika ada cell di B3:F14 yang tidak ada datanya, maka akan menghasilkan hasil countif akan 0. Maka akan ada item yang kalkulasinya berupa 1/0 yang menghasilkan error value #DIV/0!
Maka efek ketika hasil CountIF adalah 0 harus dinetralisir dengan suatu nilai yang bukan 0. CountIF menghasilkan 0 jika tidak ada data, maka kondisi tidak ada data bisa diubah hasilnya menjadi 1 yang setara TRUE. Maka Len(B3:F14)=0 akan bernilai TRUE ketika B3:F14 tidak ada datanya. Bunyi kondisi terhadap CountIF adalah sebagai berikut :
>> Jika hasil CountIF adalah 0, maka isi dengan Len(B3:F14)=0
>> Jika hasil CountIF bukan 0, maka isi dengan hasil CountIF
Secara harfiah, translatenya ke bahasa formula menjadi :
IF( COUNTIF(B3:F14,B3:F14)= 0 , ( Len(B3:F14)=0 ) , COUNTIF(B3:F14,B3:F14) )
Dari kalimat ini, sebenarnya jika diperhatikan secara seksama, akan ada benang merah berbunyi :
"Nilai hasil CountIF atau Len(B3:F14)=0"
yang bahasa formulanya :
( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
Hasilnya, akan didapat bahwa seluruh cell yang tidak ada isinya akan bernilai TRUE (setara 1).
Maka, 1/COUNTIF(B3:F14,B3:F14)
akan menjadi :
1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
tetapi, akan terjadi 1/1 ketika cell tidak ada isinya, karena 1/( 0 + TRUE ) = 1/( 0 + 1 ) = 1/1
Hal ini akan menghasilkan jumlah unique yang tidak tepat. Oleh sebab itu bagian 1 (biru) dalam :
1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
harus berupa pemfilteran bahwa jika cell berisi data maka bernilai 1 dan jika tidak berisi data bernilai 0.
( Len(B3:F14)>0 )
Maka formula lengkap :
=SUMPRODUCT(( Len(B3:F14)>0 ) / ( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) ) )

3. Cara1.
untuk versi xl2007 (dengan IFError) array formulanya  (J3)
=IFERROR(INDEX($H$3:$H$63,MATCH(0,COUNTIF(J$2:J2,$H$3:$H$63),0)),"")
untuk semua versi (berdasar jumlah item unique yang mungkin) : (K3)
=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)))
memiliki benang merah pada bagian yang biru :
MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
Bahasa manusianya :
"Cari posisi angka 0 pada suatu data array yang berupa nilai-nilai jumlah cacah (CountIF) data dalam $H$3:$H$63 di suatu area K$2:K2 yang pencariannya harus bener-bener persis [0]"
Kalimat 'nilai-nilai jumlah cacah data dalam $H$3:$H$63 di suatu area K$2:K2' akan menghasilkan angka bukan 0 jika memang telah ada di K$2:K2 dan menghasilkan 0 jika belum ada di K$2:K2. Padahal area K$2:K2 adalah hasil (output). Artinya, kalau sampai hasil CountIF adalah 0, maka data itu belum ada di area output alias data baru. Dengan demikian, fungsi Match tugasnya adalah selalu mendapatkan posisi data baru (data yang belum ada di output).
Pada kondisi itu, tidak ada pengkondisian bahwa data di $H$3:$H$63 bukanlah bernilai 0.
Jelas sudah diketahui bahwa data baru (belum ada di output) adalah yang COUNTIF(K$2:K2,$H$3:$H$63)=0
Kondisi data di $H$3:$H$63 bukanlah bernilai 0 dapat diekspresikan sebagai :
( $H$3:$H$63 <> 0 )

Sampai disini, sudah ada 2 kondisi :
1. data baru (belum ada dioutput) :
( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
2. tidak adanya nilai di data $H$3:$H$63
( $H$3:$H$63 <> 0 )
Keduanya harus terpenuhi berarti setara AND yang setara perkalian.
Maka array data dalam Match akan berupa :
( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 )
Hasilnya adalah 1 (untuk data baru dan nilai data di $H$3:$H$63 bukanlah 0 ) atau 0 (untuk salah satu dari kedua kondisi yang tak terpenuhi).
Jadi, yang menjadi lookup value (dicari oleh match) bukan lagi angka 0, melainkan angka 1
Nah... bagian Match akan menjadi :
MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 )

Array formula lengkap masing-masing :
1. untuk versi xl2007 :
=IFERROR(INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ),"")

2. untuk semua versi :
=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ))

Kesimpulannya :
Pengubahan formula karena adanya perubahan kondisi (bertambah atau berkurang jumlah kondisinya), difokuskan pada penyusunan kondisi-kondisi baru yang menyertakan kondisi awal (sebelum berubah) secara konsisten. Seperti kondisi bahwa jika CountIF 0 artinya sebagai data baru bergabung bersama kondisi baru berupa ada data di suatu area (dengan Len misalnya).

Wassalam,
Kid.

2012/10/18 M.Ade Alfarid <QA@kkmi.co.id>

Dear,
>
>
>Untuk menghilangkan angka 0 pada list index,
>tambah rumus apa?
>
>Ade
>
>
>
>
>On Mon, 15 Oct 2012 16:30:55 +0700, Mr. Kid <mr.nmkid@gmail.com> wrote:
>
>
>> Coba file terlampir.
>> Ada yang dibantu oleh sebuah kolom untuk menyusun data multi kolom
>> menjadi
>> data sekolom.
>>
>> Wassalam,
>> Kid
>>
>>
>> 2012/10/15 M.Ade Alfarid <QA@kkmi.co.id>
>>
>>> **
>
>>>
>>>
>>> BeExceller,
>>>
>>> Bagaimana untuk mengurut banyak data beberapa kolom,
>>> data dobel dihitung sekali saja?
>>> Terimakasih
>>> --
>>> ade
>>>
>

Thu Oct 18, 2012 9:05 pm (PDT) . Posted by:

"aji mumpung"

ikutan ya.. biar rame hehehe..

cara lain untuk menemukan baris paling akhir adalah menggunakan kode berikut

Cells.SpecialCells(xlCellTypeLastCell).Row

hasilnya disimpan dalam sebuah variabel yang seharusnya sudah
dideklarasikan di awal
jadi jika dalam range data terdapat beberapa baris kosing, masih bisa
terdeteksi dalam looping For - Next

hal ini juga akan memperpendek waktu proses & mengurangi beban kerja macro
yang hanya akan memproses dari baris data awal sampai dengan baris data
akhir.. selain itu tidak perlu dilakukan pengecekan

cmiiw (kata mbak'e Colek Me If Im Wrong)

wassalam,

-aji mumpung-

Pada 19 Oktober 2012 10:56, hendrik karnadi <hendrikkarnadi@yahoo.com>menulis:

> **
>
>
> Dear Winda,
>
> Mengapa yang dibold tidak terbaca?
> Karena disamping baris kosong pertama pada kolom B masih ada data (masih
> termasuk lingkup CurrentRegion), sedangkan disamping baris kosong kedua
> pada kolom B tidak ada data jadi tidak ikut terambil.
>
> Untuk itu perlu sedikit akal untuk menentukan baris akhir yang ada isinya.
>
> Coba lihat macro yang sudah diupdate untuk mengambil baris terakhir yang
> ada isinya.
>
> Salam,
> Hendrik Karnadi
>
>
> ------------------------------
> *From:* Winda Miranti <winda_1504@yahoo.co.id>
> *To:* "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
> *Sent:* Friday, 19 October 2012, 9:46
> *Subject:* Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
> Dear Mas Hendrik,
>
> Trimakasi sekali solusi nya mas hendrik kebenaran saya juga lagi menemukan
> kasus yang sama
> tapi hanya ingin sebatas per kolom saja misalnya hanya kolom B, saya coba
> otak atik tapi debug selalu hehe, bgmn cara membatasinya biar hanya membaca
> satu kolom saja?
> dan saya coba tambahkan data kebawah seperti data telampir, tetapi jika
> ada baris yg kosong dua kali, data setelah baris kosong yg kedua tersebut
> tidak terbaca
> Mohon pencerahanya mas hendrik :D
>
> Regards,
> Winda
>
>
> ------------------------------
> *Dari:* hendrik karnadi <hendrikkarnadi@yahoo.com>
> *Kepada:* "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
> *Dikirim:* Jumat, 19 Oktober 2012 6:05
> *Judul:* Fw: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
> Sekedar selingan, pake macro.
>
> Salam,
> Hendrik Karnadi
>
> ----- Forwarded Message -----
> *From:* Mr. Kid <mr.nmkid@gmail.com>
> *To:* belajar-excel@yahoogroups.com
> *Sent:* Thursday, 18 October 2012, 23:47
> *Subject:* Re: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
> 1. Untuk cara 2, ada array formula bantu berbunyi : (cell M3)
> =MIN(IF(COUNTIF(N$2:N2,$B$3:$F$14)=0
> ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
> Kondisi yang ada baru 1, yaitu bagian CountIF. Belum ada pengkondisian
> berdasar ada atau tidaknya teks dalam data.
> Pengkondisian untuk mengambil cell yang ada datanya saja adalah dengan
> memeriksa jumlah karakter yang ada di dalam cell tersebut.
> ( Len($B$3:$F$14) > 0 )
>
> Jadi, 2 kondisi yang harus digunakan adalah :
> >> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )
> >> ( Len($B$3:$F$14) > 0 )
> Keduanya harus terpenuhi, artinya harus dihubungkan dengan operator AND
> yang setara dengan kegiatan operasi matematis perkalian.
> Jadi kedua kondisi akan diekspresikan menjadi :
> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )
>
> Maka bagian CountIF dalam array formula diganti dengan 2 pengkondisian
> baru ini akan menjadi :
> =MIN(IF( ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )
> ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
> >> Jangan lupa untuk di-Enter sebagai Array formula dengan CTRL SHIFT
> ENTER <<
>
> 2. Menghitung jumlah unique item (seperti cell H2 atau M2)
> Formula yang ada :
> =SUMPRODUCT(1/COUNTIF(B3:F14,B3:F14))
> Ketika ada cell di B3:F14 yang tidak ada datanya, maka akan menghasilkan
> hasil countif akan 0. Maka akan ada item yang kalkulasinya berupa 1/0yang menghasilkan error value #DIV
> /0!
> Maka efek ketika hasil CountIF adalah 0 harus dinetralisir dengan suatu
> nilai yang bukan 0. CountIF menghasilkan 0 jika tidak ada data, maka
> kondisi tidak ada data bisa diubah hasilnya menjadi 1 yang setara TRUE. Maka
> Len(B3:F14)=0 akan bernilai TRUE ketika B3:F14 tidak ada datanya. Bunyi
> kondisi terhadap CountIF adalah sebagai berikut :
> >> Jika hasil CountIF adalah 0, maka isi dengan Len(B3:F14)=0
> >> Jika hasil CountIF bukan 0, maka isi dengan hasil CountIF
> Secara harfiah, translatenya ke bahasa formula menjadi :
> IF( COUNTIF(B3:F14,B3:F14) = 0 , ( Len(B3:F14)=0 ) , COUNTIF(B3:F14,B3:F14)
> )
> Dari kalimat ini, sebenarnya jika diperhatikan secara seksama, akan ada
> benang merah berbunyi :
> "Nilai hasil CountIF atau Len(B3:F14)=0"
> yang bahasa formulanya :
> ( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
> Hasilnya, akan didapat bahwa seluruh cell yang tidak ada isinya akan
> bernilai TRUE (setara 1).
> Maka, 1/COUNTIF(B3:F14,B3:F14)
> akan menjadi :
> 1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
> *tetapi*, akan terjadi 1/1 ketika cell tidak ada isinya, karena 1/( 0 +
> TRUE ) = 1/( 0 + 1 ) = 1/1
> Hal ini akan menghasilkan jumlah unique yang tidak tepat. Oleh sebab itu
> bagian 1 (biru) dalam :
> 1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
> harus berupa pemfilteran bahwa jika cell berisi data maka bernilai 1 dan
> jika tidak berisi data bernilai 0.
> ( Len(B3:F14)>0 )
> Maka formula lengkap :
> =SUMPRODUCT( ( Len(****B3:F14)>0 ) / ( COUNTIF(B3:F14,B3:F14) + ( Len(
> B3:F14)=0 ) ) )
>
> 3. Cara1.
> untuk versi xl2007 (dengan IFError) array formulanya (J3)
> =IFERROR(INDEX($H$3:$H$63,MATCH(0,COUNTIF(J$2:J2,$H$3:$H$63),0)),"")
> untuk semua versi (berdasar jumlah item unique yang mungkin) : (K3)
> =IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
> ))
> memiliki benang merah pada bagian yang biru :
> MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
> Bahasa manusianya :
> "Cari posisi angka 0 pada suatu data array yang berupa nilai-nilai jumlah
> cacah (CountIF) data dalam $H$3:$H$63 di suatu area K$2:K2 yang
> pencariannya harus bener-bener persis [0]"
> Kalimat 'nilai-nilai jumlah cacah data dalam $H$3:$H$63 di suatu area
> K$2:K2' akan menghasilkan angka bukan 0 jika memang telah ada di K$2:K2dan menghasilkan 0 jika belum ada di
> K$2:K2. Padahal area K$2:K2 adalah hasil (output). Artinya, kalau sampai
> hasil CountIF adalah 0, maka data itu belum ada di area output alias data
> baru. Dengan demikian, fungsi Match tugasnya adalah selalu mendapatkan
> posisi data baru (data yang belum ada di output).
> Pada kondisi itu, tidak ada pengkondisian bahwa data di $H$3:$H$63
> bukanlah bernilai 0.
> Jelas sudah diketahui bahwa data baru (belum ada di output) adalah yang
> COUNTIF(K$2:K2,$H$3:$H$63)=0
> Kondisi data di $H$3:$H$63 bukanlah bernilai 0 dapat diekspresikan
> sebagai :
> ( $H$3:$H$63 <> 0 )
>
> Sampai disini, sudah ada 2 kondisi :
> 1. data baru (belum ada dioutput) :
> ( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
> 2. tidak adanya nilai di data $H$3:$H$63
> ( $H$3:$H$63 <> 0 )
> Keduanya harus terpenuhi berarti setara AND yang setara perkalian.
> Maka array data dalam Match akan berupa :
> *( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( **$H$3:$H$63 <> 0 )*
> Hasilnya adalah *1* (untuk data baru *dan* nilai data di $H$3:$H$63 bukanlah
> 0 ) atau 0 (untuk salah satu dari kedua kondisi yang tak terpenuhi).
> Jadi, yang menjadi lookup value (dicari oleh match) bukan lagi angka 0,
> melainkan angka *1*
> Nah... bagian Match akan menjadi :
> MATCH(* 1 *, *( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( **$H$3:$H$63 <> 0 )* ,
> 0 )
>
> Array formula lengkap masing-masing :
> 1. untuk versi xl2007 :
> =IFERROR(INDEX($H$3:$H$63, MATCH(* 1 *, *( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
> * ( **$H$3:$H$63 <> 0 )* , 0 ) ),"")
>
> 2. untuk semua versi :
> =IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63, MATCH(* 1 *, *( COUNTIF(K$2:K2,$H$3:$H$63)=0
> ) * ( **$H$3:$H$63 <> 0 )* , 0 ) ))
>
> Kesimpulannya :
> Pengubahan formula karena adanya perubahan kondisi (bertambah atau
> berkurang jumlah kondisinya), difokuskan pada penyusunan kondisi-kondisi
> baru yang menyertakan kondisi awal (sebelum berubah) secara konsisten.
> Seperti kondisi bahwa jika CountIF 0 artinya sebagai data baru bergabung
> bersama kondisi baru berupa ada data di suatu area (dengan Len misalnya).
>
> Wassalam,
> Kid.
>
>
>
> 2012/10/18 M.Ade Alfarid <QA@kkmi.co.id>
>
> **
> Dear,
>
> Untuk menghilangkan angka 0 pada list index,
> tambah rumus apa?
>
> Ade
>
>
>
>
> On Mon, 15 Oct 2012 16:30:55 +0700, Mr. Kid <mr.nmkid@gmail.com> wrote:
>
> > Coba file terlampir.
> > Ada yang dibantu oleh sebuah kolom untuk menyusun data multi kolom
> > menjadi
> > data sekolom.
> >
> > Wassalam,
> > Kid
> >
> >
> > 2012/10/15 M.Ade Alfarid <QA@kkmi.co.id>
> >
> >> **
>
> >>
> >>
> >> BeExceller,
> >>
> >> Bagaimana untuk mengurut banyak data beberapa kolom,
> >> data dobel dihitung sekali saja?
> >> Terimakasih
> >> --
> >> ade
> >>
>
>
>
>
>
>
>
>
>
>

Thu Oct 18, 2012 9:18 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Coba juga

1. definisi data ke suatu variabel range
set rng=columns(2).specialcells(xlcelltypeconstants) 'jika bukan hasil
formula, jika hasil formula pakai xlcelltypeformulas
'jika kolom b yang diproses ada yang formula dan bukan formula (constant),
lakukan union
'set rng=Union( columns(2).specialcells(xlcelltypeconstants) ,
columns(2).specialcells(xlcelltypeformulas)
)

'beda lagi jika bisa jadi kadang kadang semua constant dan kadang-kdang
semua formulas
dim rngtmp as range, rng as range
on error resume next
set rngtmp=columns(2).specialcells(xlcelltypeconstants)
if not rngtmp is nothing then
set rng=rngtmp
endif
set rngtmp=columns(2).specialcells(xlcelltypeformulas)
if not rngtmp is nothing then
if rng is nothing then
set rng=rngtmp
else
set rng=union( rng , rngtmp )
endif
endif

2. tentang batasan
'jika ada batasan header, misal header di baris ke 12 dan hanya data di baris
13 lebih yang diproses, maka ganti baris :
if r <> "" then
menjadi :
if r.row > 12 then

Wassalam,
Kid.

2012/10/19 hendrik karnadi <hendrikkarnadi@yahoo.com>

> **
>
>
> Dear Winda,
>
> Mengapa yang dibold tidak terbaca?
> Karena disamping baris kosong pertama pada kolom B masih ada data (masih
> termasuk lingkup CurrentRegion), sedangkan disamping baris kosong kedua
> pada kolom B tidak ada data jadi tidak ikut terambil.
>
> Untuk itu perlu sedikit akal untuk menentukan baris akhir yang ada isinya.
>
> Coba lihat macro yang sudah diupdate untuk mengambil baris terakhir yang
> ada isinya.
>
> Salam,
> Hendrik Karnadi
>
>
> ------------------------------
> *From:* Winda Miranti <winda_1504@yahoo.co.id>
> *To:* "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
> *Sent:* Friday, 19 October 2012, 9:46
> *Subject:* Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
> Dear Mas Hendrik,
>
> Trimakasi sekali solusi nya mas hendrik kebenaran saya juga lagi menemukan
> kasus yang sama
> tapi hanya ingin sebatas per kolom saja misalnya hanya kolom B, saya coba
> otak atik tapi debug selalu hehe, bgmn cara membatasinya biar hanya membaca
> satu kolom saja?
> dan saya coba tambahkan data kebawah seperti data telampir, tetapi jika
> ada baris yg kosong dua kali, data setelah baris kosong yg kedua tersebut
> tidak terbaca
> Mohon pencerahanya mas hendrik :D
>
> Regards,
> Winda
>
>
> ------------------------------
> *Dari:* hendrik karnadi <hendrikkarnadi@yahoo.com>
> *Kepada:* "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
> *Dikirim:* Jumat, 19 Oktober 2012 6:05
> *Judul:* Fw: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
> Sekedar selingan, pake macro.
>
> Salam,
> Hendrik Karnadi
>
> ----- Forwarded Message -----
> *From:* Mr. Kid <mr.nmkid@gmail.com>
> *To:* belajar-excel@yahoogroups.com
> *Sent:* Thursday, 18 October 2012, 23:47
> *Subject:* Re: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
> 1. Untuk cara 2, ada array formula bantu berbunyi : (cell M3)
> =MIN(IF(COUNTIF(N$2:N2,$B$3:$F$14)=0
> ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
> Kondisi yang ada baru 1, yaitu bagian CountIF. Belum ada pengkondisian
> berdasar ada atau tidaknya teks dalam data.
> Pengkondisian untuk mengambil cell yang ada datanya saja adalah dengan
> memeriksa jumlah karakter yang ada di dalam cell tersebut.
> ( Len($B$3:$F$14) > 0 )
>
> Jadi, 2 kondisi yang harus digunakan adalah :
> >> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )
> >> ( Len($B$3:$F$14) > 0 )
> Keduanya harus terpenuhi, artinya harus dihubungkan dengan operator AND
> yang setara dengan kegiatan operasi matematis perkalian.
> Jadi kedua kondisi akan diekspresikan menjadi :
> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )
>
> Maka bagian CountIF dalam array formula diganti dengan 2 pengkondisian
> baru ini akan menjadi :
> =MIN(IF( ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )
> ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
> >> Jangan lupa untuk di-Enter sebagai Array formula dengan CTRL SHIFT
> ENTER <<
>
> 2. Menghitung jumlah unique item (seperti cell H2 atau M2)
> Formula yang ada :
> =SUMPRODUCT(1/COUNTIF(B3:F14,B3:F14))
> Ketika ada cell di B3:F14 yang tidak ada datanya, maka akan menghasilkan
> hasil countif akan 0. Maka akan ada item yang kalkulasinya berupa 1/0yang menghasilkan error value #DIV
> /0!
> Maka efek ketika hasil CountIF adalah 0 harus dinetralisir dengan suatu
> nilai yang bukan 0. CountIF menghasilkan 0 jika tidak ada data, maka
> kondisi tidak ada data bisa diubah hasilnya menjadi 1 yang setara TRUE. Maka
> Len(B3:F14)=0 akan bernilai TRUE ketika B3:F14 tidak ada datanya. Bunyi
> kondisi terhadap CountIF adalah sebagai berikut :
> >> Jika hasil CountIF adalah 0, maka isi dengan Len(B3:F14)=0
> >> Jika hasil CountIF bukan 0, maka isi dengan hasil CountIF
> Secara harfiah, translatenya ke bahasa formula menjadi :
> IF( COUNTIF(B3:F14,B3:F14) = 0 , ( Len(B3:F14)=0 ) , COUNTIF(B3:F14,B3:F14)
> )
> Dari kalimat ini, sebenarnya jika diperhatikan secara seksama, akan ada
> benang merah berbunyi :
> "Nilai hasil CountIF atau Len(B3:F14)=0"
> yang bahasa formulanya :
> ( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
> Hasilnya, akan didapat bahwa seluruh cell yang tidak ada isinya akan
> bernilai TRUE (setara 1).
> Maka, 1/COUNTIF(B3:F14,B3:F14)
> akan menjadi :
> 1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
> *tetapi*, akan terjadi 1/1 ketika cell tidak ada isinya, karena 1/( 0 +
> TRUE ) = 1/( 0 + 1 ) = 1/1
> Hal ini akan menghasilkan jumlah unique yang tidak tepat. Oleh sebab itu
> bagian 1 (biru) dalam :
> 1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
> harus berupa pemfilteran bahwa jika cell berisi data maka bernilai 1 dan
> jika tidak berisi data bernilai 0.
> ( Len(B3:F14)>0 )
> Maka formula lengkap :
> =SUMPRODUCT( ( Len(****B3:F14)>0 ) / ( COUNTIF(B3:F14,B3:F14) + ( Len(
> B3:F14)=0 ) ) )
>
> 3. Cara1.
> untuk versi xl2007 (dengan IFError) array formulanya (J3)
> =IFERROR(INDEX($H$3:$H$63,MATCH(0,COUNTIF(J$2:J2,$H$3:$H$63),0)),"")
> untuk semua versi (berdasar jumlah item unique yang mungkin) : (K3)
> =IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
> ))
> memiliki benang merah pada bagian yang biru :
> MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
> Bahasa manusianya :
> "Cari posisi angka 0 pada suatu data array yang berupa nilai-nilai jumlah
> cacah (CountIF) data dalam $H$3:$H$63 di suatu area K$2:K2 yang
> pencariannya harus bener-bener persis [0]"
> Kalimat 'nilai-nilai jumlah cacah data dalam $H$3:$H$63 di suatu area
> K$2:K2' akan menghasilkan angka bukan 0 jika memang telah ada di K$2:K2dan menghasilkan 0 jika belum ada di
> K$2:K2. Padahal area K$2:K2 adalah hasil (output). Artinya, kalau sampai
> hasil CountIF adalah 0, maka data itu belum ada di area output alias data
> baru. Dengan demikian, fungsi Match tugasnya adalah selalu mendapatkan
> posisi data baru (data yang belum ada di output).
> Pada kondisi itu, tidak ada pengkondisian bahwa data di $H$3:$H$63
> bukanlah bernilai 0.
> Jelas sudah diketahui bahwa data baru (belum ada di output) adalah yang
> COUNTIF(K$2:K2,$H$3:$H$63)=0
> Kondisi data di $H$3:$H$63 bukanlah bernilai 0 dapat diekspresikan
> sebagai :
> ( $H$3:$H$63 <> 0 )
>
> Sampai disini, sudah ada 2 kondisi :
> 1. data baru (belum ada dioutput) :
> ( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
> 2. tidak adanya nilai di data $H$3:$H$63
> ( $H$3:$H$63 <> 0 )
> Keduanya harus terpenuhi berarti setara AND yang setara perkalian.
> Maka array data dalam Match akan berupa :
> *( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( **$H$3:$H$63 <> 0 )*
> Hasilnya adalah *1* (untuk data baru *dan* nilai data di $H$3:$H$63 bukanlah
> 0 ) atau 0 (untuk salah satu dari kedua kondisi yang tak terpenuhi).
> Jadi, yang menjadi lookup value (dicari oleh match) bukan lagi angka 0,
> melainkan angka *1*
> Nah... bagian Match akan menjadi :
> MATCH(* 1 *, *( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( **$H$3:$H$63 <> 0 )* ,
> 0 )
>
> Array formula lengkap masing-masing :
> 1. untuk versi xl2007 :
> =IFERROR(INDEX($H$3:$H$63, MATCH(* 1 *, *( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
> * ( **$H$3:$H$63 <> 0 )* , 0 ) ),"")
>
> 2. untuk semua versi :
> =IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63, MATCH(* 1 *, *( COUNTIF(K$2:K2,$H$3:$H$63)=0
> ) * ( **$H$3:$H$63 <> 0 )* , 0 ) ))
>
> Kesimpulannya :
> Pengubahan formula karena adanya perubahan kondisi (bertambah atau
> berkurang jumlah kondisinya), difokuskan pada penyusunan kondisi-kondisi
> baru yang menyertakan kondisi awal (sebelum berubah) secara konsisten.
> Seperti kondisi bahwa jika CountIF 0 artinya sebagai data baru bergabung
> bersama kondisi baru berupa ada data di suatu area (dengan Len misalnya).
>
> Wassalam,
> Kid.
>
>
>
> 2012/10/18 M.Ade Alfarid <QA@kkmi.co.id>
>
> **
> Dear,
>
> Untuk menghilangkan angka 0 pada list index,
> tambah rumus apa?
>
> Ade
>
>
>
>
> On Mon, 15 Oct 2012 16:30:55 +0700, Mr. Kid <mr.nmkid@gmail.com> wrote:
>
> > Coba file terlampir.
> > Ada yang dibantu oleh sebuah kolom untuk menyusun data multi kolom
> > menjadi
> > data sekolom.
> >
> > Wassalam,
> > Kid
> >
> >
> > 2012/10/15 M.Ade Alfarid <QA@kkmi.co.id>
> >
> >> **
>
> >>
> >>
> >> BeExceller,
> >>
> >> Bagaimana untuk mengurut banyak data beberapa kolom,
> >> data dobel dihitung sekali saja?
> >> Terimakasih
> >> --
> >> ade
> >>
>
>
>
>
>
>
>
>
>
>

Thu Oct 18, 2012 9:47 pm (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Terima kasih Mr Kid atas tambahan ilmunya.

Salam,
Hendrik Karnadi

----- Forwarded Message -----
From: Mr. Kid <mr.nmkid@gmail.com>
To: belajar-excel@yahoogroups.com
Sent: Friday, 19 October 2012, 11:17
Subject: Re: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih


 
Coba juga

1. definisi data ke suatu variabel range
set rng=columns(2).specialcells(xlcelltypeconstants)      'jika bukan hasil formula,jika hasil formulapakai xlcelltypeformulas
'jika kolom b yang diproses ada yang formula dan bukan formula (constant), lakukan union
'set rng=Union( columns(2).specialcells(xlcelltypeconstants) , columns(2).specialcells(xlcelltypeformulas) )

'beda lagi jika bisa jadi kadang kadang semua constant dan kadang-kdang semua formulas
dim rngtmp as range, rngas range
onerror resume next
set rngtmp=columns(2).specialcells(xlcelltypeconstants)
if not rngtmp is nothing then
    set rng=rngtmp
endif
set rngtmp=columns(2).specialcells(xlcelltypeformulas)
if not rngtmp is nothing then
    if rng isnothing then
        set rng=rngtmp
    else
        set rng=union( rng , rngtmp )
    endif
endif

2. tentang batasan
'jika ada batasan header, misal header di baris ke 12 dan hanya data di baris 13 lebih yang diproses, maka ganti baris :
if r <> "" then
menjadi :
if r.row > 12 then

Wassalam,
Kid.

2012/10/19 hendrik karnadi <hendrikkarnadi@yahoo.com>


>Dear Winda,
>
>
>Mengapa yang dibold tidak terbaca? 
>Karena disamping baris kosong pertama pada kolom B masih ada data (masih termasuk lingkup CurrentRegion), sedangkan disamping baris kosong kedua pada kolom B tidak ada data jadi tidak ikut terambil.
>
>
>Untuk itu perlu sedikit akal untuk menentukan baris akhir yang ada isinya.
>
>
>Coba lihat macro yang sudah diupdate untuk mengambil baris terakhir yang ada isinya.
>
>
>Salam,
>Hendrik Karnadi
>
>
>
>
>
>________________________________
> From: Winda Miranti <winda_1504@yahoo.co.id>
>To: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
>Sent: Friday, 19 October 2012, 9:46
>Subject: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
>

>Dear Mas Hendrik,
>
>Trimakasi sekali solusi nya mas hendrik kebenaran saya juga lagi menemukan kasus yang sama
>tapi hanya ingin sebatas per kolom saja misalnya hanya kolom B, saya coba otak atik tapi debug selalu hehe, bgmn cara membatasinya biar hanya membaca satu kolom saja?
>dan saya coba tambahkan data kebawah seperti data telampir, tetapi jika ada baris yg kosong dua kali, data setelah baris kosong yg kedua tersebut tidak terbaca
>Mohon pencerahanya mas hendrik :D
>
>Regards,
>Winda
>
>
>
>
>
>
>________________________________
> Dari: hendrik karnadi <hendrikkarnadi@yahoo.com>
>Kepada: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
>Dikirim: Jumat, 19 Oktober 2012 6:05
>Judul: Fw: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>

>Sekedar selingan, pake macro.
>
>
>Salam,
>Hendrik Karnadi
>
>
>
>----- Forwarded Message -----
>From: Mr. Kid <mr.nmkid@gmail.com>
>To: belajar-excel@yahoogroups.com
>Sent: Thursday, 18 October 2012, 23:47
>Subject: Re: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>

>1. Untuk cara 2, ada array formula bantu berbunyi : (cell M3)
>=MIN(IF(COUNTIF(N$2:N2,$B$3:$F$14)=0,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
>Kondisi yang ada baru 1, yaitu bagian CountIF. Belum ada pengkondisian berdasar ada atau tidaknya teks dalam data.
>Pengkondisian untuk mengambil cell yang ada datanya saja adalah dengan memeriksa jumlah karakter yang ada di dalam cell tersebut.
>( Len($B$3:$F$14) > 0 )
>
>Jadi, 2 kondisi yang harus digunakan adalah :
>>> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )
>>> ( Len($B$3:$F$14) > 0 )
>Keduanya harus terpenuhi, artinya harus dihubungkan dengan operator AND yang setara dengan kegiatan operasi matematis perkalian.
>Jadi kedua kondisi akan diekspresikan menjadi :
>( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )
>
>Maka bagian CountIF dalam array formula diganti dengan 2 pengkondisian baru ini akan menjadi :
>=MIN(IF( ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 ) ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
>>> Jangan lupa untuk di-Enter sebagai Array formula dengan CTRL  SHIFT  ENTER <<
>
>2. Menghitung jumlah unique item (seperti cell H2 atau M2)
>Formula yang ada :
>=SUMPRODUCT(1/COUNTIF(B3:F14,B3:F14))
>Ketika ada cell di B3:F14 yang tidak ada datanya, maka akan menghasilkan hasil countif akan 0. Maka akan ada item yang kalkulasinya berupa 1/0 yang menghasilkan error value #DIV/0!
>Maka efek ketika hasil CountIF adalah 0 harus dinetralisir dengan suatu nilai yang bukan 0. CountIF menghasilkan 0 jika tidak ada data, maka kondisi tidak ada data bisa diubah hasilnya menjadi 1 yang setara TRUE. Maka Len(B3:F14)=0 akan bernilai TRUE ketika B3:F14 tidak ada datanya. Bunyi kondisi terhadap CountIF adalah sebagai berikut :
>>> Jika hasil CountIF adalah 0, maka isi dengan Len(B3:F14)=0
>>> Jika hasil CountIF bukan 0, maka isi dengan hasil CountIF
>Secara harfiah, translatenya ke bahasa formula menjadi :
>IF( COUNTIF(B3:F14,B3:F14)= 0 , ( Len(B3:F14)=0 ) , COUNTIF(B3:F14,B3:F14) )
>Dari kalimat ini, sebenarnya jika diperhatikan secara seksama, akan ada benang merah berbunyi :
>"Nilai hasil CountIF atau Len(B3:F14)=0"
>yang bahasa formulanya :
>( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>Hasilnya, akan didapat bahwa seluruh cell yang tidak ada isinya akan bernilai TRUE (setara 1).
>Maka, 1/COUNTIF(B3:F14,B3:F14)
>akan menjadi :
>1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>tetapi, akan terjadi 1/1 ketika cell tidak ada isinya, karena 1/( 0 + TRUE ) = 1/( 0 + 1 ) = 1/1
>Hal ini akan menghasilkan jumlah unique yang tidak tepat. Oleh sebab itu bagian 1 (biru) dalam :
>1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>harus berupa pemfilteran bahwa jika cell berisi data maka bernilai 1 dan jika tidak berisi data bernilai 0.
>( Len(B3:F14)>0 )
>Maka formula lengkap :
>=SUMPRODUCT(( Len(B3:F14)>0 ) / ( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) ) )
>
>3. Cara1.
>untuk versi xl2007 (dengan IFError) array formulanya  (J3)
>=IFERROR(INDEX($H$3:$H$63,MATCH(0,COUNTIF(J$2:J2,$H$3:$H$63),0)),"")
>untuk semua versi (berdasar jumlah item unique yang mungkin) : (K3)
>=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)))
>memiliki benang merah pada bagian yang biru :
>MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
>Bahasa manusianya :
>"Cari posisi angka 0 pada suatu data array yang berupa nilai-nilai jumlah cacah (CountIF) data dalam $H$3:$H$63 di suatu area K$2:K2 yang pencariannya harus bener-bener persis [0]"
>Kalimat 'nilai-nilai jumlah cacah data dalam $H$3:$H$63 di suatu area K$2:K2' akan menghasilkan angka bukan 0 jika memang telah ada di K$2:K2 dan menghasilkan 0 jika belum ada di K$2:K2. Padahal area K$2:K2 adalah hasil (output). Artinya, kalau sampai hasil CountIF adalah 0, maka data itu belum ada di area output alias data baru. Dengan demikian, fungsi Match tugasnya adalah selalu mendapatkan posisi data baru (data yang belum ada di output).
>Pada kondisi itu, tidak ada pengkondisian bahwa data di $H$3:$H$63 bukanlah bernilai 0.
>Jelas sudah diketahui bahwa data baru (belum ada di output) adalah yang COUNTIF(K$2:K2,$H$3:$H$63)=0
>Kondisi data di $H$3:$H$63 bukanlah bernilai 0 dapat diekspresikan sebagai :
>( $H$3:$H$63 <> 0 )
>
>Sampai disini, sudah ada 2 kondisi :
>1. data baru (belum ada dioutput) :
>( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
>2. tidak adanya nilai di data $H$3:$H$63
>( $H$3:$H$63 <> 0 )
>Keduanya harus terpenuhi berarti setara AND yang setara perkalian.
>Maka array data dalam Match akan berupa :
>( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 )
>Hasilnya adalah 1 (untuk data baru dan nilai data di $H$3:$H$63 bukanlah 0 ) atau 0 (untuk salah satu dari kedua kondisi yang tak terpenuhi).
>Jadi, yang menjadi lookup value (dicari oleh match) bukan lagi angka 0, melainkan angka 1
>Nah... bagian Match akan menjadi :
>MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 )
>
>Array formula lengkap masing-masing :
>1. untuk versi xl2007 :
>=IFERROR(INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ),"")
>
>2. untuk semua versi :
>=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ))
>
>Kesimpulannya :
>Pengubahan formula karena adanya perubahan kondisi (bertambah atau berkurang jumlah kondisinya), difokuskan pada penyusunan kondisi-kondisi baru yang menyertakan kondisi awal (sebelum berubah) secara konsisten. Seperti kondisi bahwa jika CountIF 0 artinya sebagai data baru bergabung bersama kondisi baru berupa ada data di suatu area (dengan Len misalnya).
>
>Wassalam,
>Kid.
>
>
>
>
>2012/10/18 M.Ade Alfarid <QA@kkmi.co.id>
>
>Dear,
>>
>>
>>Untuk menghilangkan angka 0 pada list index,
>>tambah rumus apa?
>>
>>Ade
>>
>>
>>
>>
>>On Mon, 15 Oct 2012 16:30:55 +0700, Mr. Kid <mr.nmkid@gmail.com> wrote:
>>
>>
>>> Coba file terlampir.
>>> Ada yang dibantu oleh sebuah kolom untuk menyusun data multi kolom
>>> menjadi
>>> data sekolom.
>>>
>>> Wassalam,
>>> Kid
>>>
>>>
>>> 2012/10/15 M.Ade Alfarid <QA@kkmi.co.id>
>>>
>>>> **
>>
>>>>
>>>>
>>>> BeExceller,
>>>>
>>>> Bagaimana untuk mengurut banyak data beberapa kolom,
>>>> data dobel dihitung sekali saja?
>>>> Terimakasih
>>>> --
>>>> ade
>>>>
>>
>
>
>
>
>
>
>

Thu Oct 18, 2012 9:50 pm (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Terima kasih Mas Aji atas tambahan ilmunya.

Salam,
Hendrik Karnadi

----- Forwarded Message -----
From: aji mumpung <pupung1986@gmail.com>
To: belajar-excel@yahoogroups.com
Sent: Friday, 19 October 2012, 11:05
Subject: Re: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih


 
ikutan ya.. biar rame hehehe..

cara lain untuk menemukan baris paling akhir adalah menggunakan kode berikut

Cells.SpecialCells(xlCellTypeLastCell).Row

hasilnya disimpan dalam sebuah variabel yang seharusnya sudah dideklarasikan di awal
jadi jika dalam range data terdapat beberapa baris kosing, masih bisa terdeteksi dalam looping For - Next

hal ini juga akan memperpendek waktu proses & mengurangi beban kerja macro yang hanya akan memproses dari baris data awal sampai dengan baris data akhir.. selain itu tidak perlu dilakukan pengecekan

cmiiw (kata mbak'e Colek Me If Im Wrong)

wassalam,

-aji mumpung-

Pada 19 Oktober 2012 10:56, hendrik karnadi <hendrikkarnadi@yahoo.com> menulis:


>Dear Winda,
>
>
>Mengapa yang dibold tidak terbaca? 
>Karena disamping baris kosong pertama pada kolom B masih ada data (masih termasuk lingkup CurrentRegion), sedangkan disamping baris kosong kedua pada kolom B tidak ada data jadi tidak ikut terambil.
>
>
>Untuk itu perlu sedikit akal untuk menentukan baris akhir yang ada isinya.
>
>
>Coba lihat macro yang sudah diupdate untuk mengambil baris terakhir yang ada isinya.
>
>
>Salam,
>Hendrik Karnadi
>
>
>
>
>
>________________________________
> From: Winda Miranti <winda_1504@yahoo.co.id>
>To: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
>Sent: Friday, 19 October 2012, 9:46
>Subject: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
>

>Dear Mas Hendrik,
>
>Trimakasi sekali solusi nya mas hendrik kebenaran saya juga lagi menemukan kasus yang sama
>tapi hanya ingin sebatas per kolom saja misalnya hanya kolom B, saya coba otak atik tapi debug selalu hehe, bgmn cara membatasinya biar hanya membaca satu kolom saja?
>dan saya coba tambahkan data kebawah seperti data telampir, tetapi jika ada baris yg kosong dua kali, data setelah baris kosong yg kedua tersebut tidak terbaca
>Mohon pencerahanya mas hendrik :D
>
>Regards,
>Winda
>
>
>
>
>
>
>________________________________
> Dari: hendrik karnadi <hendrikkarnadi@yahoo.com>
>Kepada: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
>Dikirim: Jumat, 19 Oktober 2012 6:05
>Judul: Fw: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>

>Sekedar selingan, pake macro.
>
>
>Salam,
>Hendrik Karnadi
>
>
>
>----- Forwarded Message -----
>From: Mr. Kid <mr.nmkid@gmail.com>
>To: belajar-excel@yahoogroups.com
>Sent: Thursday, 18 October 2012, 23:47
>Subject: Re: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>

>1. Untuk cara 2, ada array formula bantu berbunyi : (cell M3)
>=MIN(IF(COUNTIF(N$2:N2,$B$3:$F$14)=0,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
>Kondisi yang ada baru 1, yaitu bagian CountIF. Belum ada pengkondisian berdasar ada atau tidaknya teks dalam data.
>Pengkondisian untuk mengambil cell yang ada datanya saja adalah dengan memeriksa jumlah karakter yang ada di dalam cell tersebut.
>( Len($B$3:$F$14) > 0 )
>
>Jadi, 2 kondisi yang harus digunakan adalah :
>>> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )
>>> ( Len($B$3:$F$14) > 0 )
>Keduanya harus terpenuhi, artinya harus dihubungkan dengan operator AND yang setara dengan kegiatan operasi matematis perkalian.
>Jadi kedua kondisi akan diekspresikan menjadi :
>( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )
>
>Maka bagian CountIF dalam array formula diganti dengan 2 pengkondisian baru ini akan menjadi :
>=MIN(IF( ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 ) ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
>>> Jangan lupa untuk di-Enter sebagai Array formula dengan CTRL  SHIFT  ENTER <<
>
>2. Menghitung jumlah unique item (seperti cell H2 atau M2)
>Formula yang ada :
>=SUMPRODUCT(1/COUNTIF(B3:F14,B3:F14))
>Ketika ada cell di B3:F14 yang tidak ada datanya, maka akan menghasilkan hasil countif akan 0. Maka akan ada item yang kalkulasinya berupa 1/0 yang menghasilkan error value #DIV/0!
>Maka efek ketika hasil CountIF adalah 0 harus dinetralisir dengan suatu nilai yang bukan 0. CountIF menghasilkan 0 jika tidak ada data, maka kondisi tidak ada data bisa diubah hasilnya menjadi 1 yang setara TRUE. Maka Len(B3:F14)=0 akan bernilai TRUE ketika B3:F14 tidak ada datanya. Bunyi kondisi terhadap CountIF adalah sebagai berikut :
>>> Jika hasil CountIF adalah 0, maka isi dengan Len(B3:F14)=0
>>> Jika hasil CountIF bukan 0, maka isi dengan hasil CountIF
>Secara harfiah, translatenya ke bahasa formula menjadi :
>IF( COUNTIF(B3:F14,B3:F14)= 0 , ( Len(B3:F14)=0 ) , COUNTIF(B3:F14,B3:F14) )
>Dari kalimat ini, sebenarnya jika diperhatikan secara seksama, akan ada benang merah berbunyi :
>"Nilai hasil CountIF atau Len(B3:F14)=0"
>yang bahasa formulanya :
>( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>Hasilnya, akan didapat bahwa seluruh cell yang tidak ada isinya akan bernilai TRUE (setara 1).
>Maka, 1/COUNTIF(B3:F14,B3:F14)
>akan menjadi :
>1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>tetapi, akan terjadi 1/1 ketika cell tidak ada isinya, karena 1/( 0 + TRUE ) = 1/( 0 + 1 ) = 1/1
>Hal ini akan menghasilkan jumlah unique yang tidak tepat. Oleh sebab itu bagian 1 (biru) dalam :
>1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>harus berupa pemfilteran bahwa jika cell berisi data maka bernilai 1 dan jika tidak berisi data bernilai 0.
>( Len(B3:F14)>0 )
>Maka formula lengkap :
>=SUMPRODUCT(( Len(B3:F14)>0 ) / ( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) ) )
>
>3. Cara1.
>untuk versi xl2007 (dengan IFError) array formulanya  (J3)
>=IFERROR(INDEX($H$3:$H$63,MATCH(0,COUNTIF(J$2:J2,$H$3:$H$63),0)),"")
>untuk semua versi (berdasar jumlah item unique yang mungkin) : (K3)
>=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)))
>memiliki benang merah pada bagian yang biru :
>MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
>Bahasa manusianya :
>"Cari posisi angka 0 pada suatu data array yang berupa nilai-nilai jumlah cacah (CountIF) data dalam $H$3:$H$63 di suatu area K$2:K2 yang pencariannya harus bener-bener persis [0]"
>Kalimat 'nilai-nilai jumlah cacah data dalam $H$3:$H$63 di suatu area K$2:K2' akan menghasilkan angka bukan 0 jika memang telah ada di K$2:K2 dan menghasilkan 0 jika belum ada di K$2:K2. Padahal area K$2:K2 adalah hasil (output). Artinya, kalau sampai hasil CountIF adalah 0, maka data itu belum ada di area output alias data baru. Dengan demikian, fungsi Match tugasnya adalah selalu mendapatkan posisi data baru (data yang belum ada di output).
>Pada kondisi itu, tidak ada pengkondisian bahwa data di $H$3:$H$63 bukanlah bernilai 0.
>Jelas sudah diketahui bahwa data baru (belum ada di output) adalah yang COUNTIF(K$2:K2,$H$3:$H$63)=0
>Kondisi data di $H$3:$H$63 bukanlah bernilai 0 dapat diekspresikan sebagai :
>( $H$3:$H$63 <> 0 )
>
>Sampai disini, sudah ada 2 kondisi :
>1. data baru (belum ada dioutput) :
>( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
>2. tidak adanya nilai di data $H$3:$H$63
>( $H$3:$H$63 <> 0 )
>Keduanya harus terpenuhi berarti setara AND yang setara perkalian.
>Maka array data dalam Match akan berupa :
>( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 )
>Hasilnya adalah 1 (untuk data baru dan nilai data di $H$3:$H$63 bukanlah 0 ) atau 0 (untuk salah satu dari kedua kondisi yang tak terpenuhi).
>Jadi, yang menjadi lookup value (dicari oleh match) bukan lagi angka 0, melainkan angka 1
>Nah... bagian Match akan menjadi :
>MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 )
>
>Array formula lengkap masing-masing :
>1. untuk versi xl2007 :
>=IFERROR(INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ),"")
>
>2. untuk semua versi :
>=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ))
>
>Kesimpulannya :
>Pengubahan formula karena adanya perubahan kondisi (bertambah atau berkurang jumlah kondisinya), difokuskan pada penyusunan kondisi-kondisi baru yang menyertakan kondisi awal (sebelum berubah) secara konsisten. Seperti kondisi bahwa jika CountIF 0 artinya sebagai data baru bergabung bersama kondisi baru berupa ada data di suatu area (dengan Len misalnya).
>
>Wassalam,
>Kid.
>
>
>
>
>2012/10/18 M.Ade Alfarid <QA@kkmi.co.id>
>
>Dear,
>>
>>
>>Untuk menghilangkan angka 0 pada list index,
>>tambah rumus apa?
>>
>>Ade
>>
>>
>>
>>
>>On Mon, 15 Oct 2012 16:30:55 +0700, Mr. Kid <mr.nmkid@gmail.com> wrote:
>>
>>
>>> Coba file terlampir.
>>> Ada yang dibantu oleh sebuah kolom untuk menyusun data multi kolom
>>> menjadi
>>> data sekolom.
>>>
>>> Wassalam,
>>> Kid
>>>
>>>
>>> 2012/10/15 M.Ade Alfarid <QA@kkmi.co.id>
>>>
>>>> **
>>
>>>>
>>>>
>>>> BeExceller,
>>>>
>>>> Bagaimana untuk mengurut banyak data beberapa kolom,
>>>> data dobel dihitung sekali saja?
>>>> Terimakasih
>>>> --
>>>> ade
>>>>
>>
>
>
>
>
>
>
>

Fri Oct 19, 2012 2:21 am (PDT) . Posted by:

"Winda Miranti" winda_1504

Trimakasi master excel atas pencerahanya, akan saya pelajari terlebih dahulu :D

Regards,
Winda

________________________________
Dari: hendrik karnadi <hendrikkarnadi@yahoo.com>
Kepada: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
Dikirim: Jumat, 19 Oktober 2012 11:50
Judul: Fw: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih


 
Terima kasih Mas Aji atas tambahan ilmunya.

Salam,
Hendrik Karnadi

----- Forwarded Message -----
From: aji mumpung <pupung1986@gmail.com>
To: belajar-excel@yahoogroups.com
Sent: Friday, 19 October 2012, 11:05
Subject: Re: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih


 
ikutan ya.. biar rame hehehe..

cara lain untuk menemukan baris paling akhir adalah menggunakan kode berikut

Cells.SpecialCells(xlCellTypeLastCell).Row

hasilnya disimpan dalam sebuah variabel yang seharusnya sudah dideklarasikan di awal
jadi jika dalam range data terdapat beberapa baris kosing, masih bisa terdeteksi dalam looping For - Next

hal ini juga akan memperpendek waktu proses & mengurangi beban kerja macro yang hanya akan memproses dari baris data awal sampai dengan baris data akhir.. selain itu tidak perlu dilakukan pengecekan

cmiiw (kata mbak'e Colek Me If Im Wrong)

wassalam,

-aji mumpung-

Pada 19 Oktober 2012 10:56, hendrik karnadi <hendrikkarnadi@yahoo.com> menulis:


>Dear Winda,
>
>
>Mengapa yang dibold tidak terbaca? 
>Karena disamping baris kosong pertama pada kolom B masih ada data (masih termasuk lingkup CurrentRegion), sedangkan disamping baris kosong kedua pada kolom B tidak ada data jadi tidak ikut terambil.
>
>
>Untuk itu perlu sedikit akal untuk menentukan baris akhir yang ada isinya.
>
>
>Coba lihat macro yang sudah diupdate untuk mengambil baris terakhir yang ada isinya.
>
>
>Salam,
>Hendrik Karnadi
>
>
>
>
>
>________________________________
> From: Winda Miranti <winda_1504@yahoo.co.id>
>To: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
>Sent: Friday, 19 October 2012, 9:46
>Subject: Bls: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>
>

>Dear Mas Hendrik,
>
>Trimakasi sekali solusi nya mas hendrik kebenaran saya juga lagi menemukan kasus yang sama
>tapi hanya ingin sebatas per kolom saja misalnya hanya kolom B, saya coba otak atik tapi debug selalu hehe, bgmn cara membatasinya biar hanya membaca satu kolom saja?
>dan saya coba tambahkan data kebawah seperti data telampir, tetapi jika ada baris yg kosong dua kali, data setelah baris kosong yg kedua tersebut tidak terbaca
>Mohon pencerahanya mas hendrik :D
>
>Regards,
>Winda
>
>
>
>
>
>
>________________________________
> Dari: hendrik karnadi <hendrikkarnadi@yahoo.com>
>Kepada: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>
>Dikirim: Jumat, 19 Oktober 2012 6:05
>Judul: Fw: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>

>Sekedar selingan, pake macro.
>
>
>Salam,
>Hendrik Karnadi
>
>
>
>----- Forwarded Message -----
>From: Mr. Kid <mr.nmkid@gmail.com>
>To: belajar-excel@yahoogroups.com
>Sent: Thursday, 18 October 2012, 23:47
>Subject: Re: [belajar-excel] Index Data Beberapa Kolom atau Lebih
>
>

>1. Untuk cara 2, ada array formula bantu berbunyi : (cell M3)
>=MIN(IF(COUNTIF(N$2:N2,$B$3:$F$14)=0,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
>Kondisi yang ada baru 1, yaitu bagian CountIF. Belum ada pengkondisian berdasar ada atau tidaknya teks dalam data.
>Pengkondisian untuk mengambil cell yang ada datanya saja adalah dengan memeriksa jumlah karakter yang ada di dalam cell tersebut.
>( Len($B$3:$F$14) > 0 )
>
>Jadi, 2 kondisi yang harus digunakan adalah :
>>> ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )
>>> ( Len($B$3:$F$14) > 0 )
>Keduanya harus terpenuhi, artinya harus dihubungkan dengan operator AND yang setara dengan kegiatan operasi matematis perkalian.
>Jadi kedua kondisi akan diekspresikan menjadi :
>( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 )
>
>Maka bagian CountIF dalam array formula diganti dengan 2 pengkondisian baru ini akan menjadi :
>=MIN(IF( ( COUNTIF(N$2:N2,$B$3:$F$14)=0 )*( Len($B$3:$F$14) > 0 ) ,ROW($B$3:$F$14)*1000+COLUMN($B$3:$F$14)))
>>> Jangan lupa untuk di-Enter sebagai Array formula dengan CTRL  SHIFT  ENTER <<
>
>2. Menghitung jumlah unique item (seperti cell H2 atau M2)
>Formula yang ada :
>=SUMPRODUCT(1/COUNTIF(B3:F14,B3:F14))
>Ketika ada cell di B3:F14 yang tidak ada datanya, maka akan menghasilkan hasil countif akan 0. Maka akan ada item yang kalkulasinya berupa 1/0 yang menghasilkan error value #DIV/0!
>Maka efek ketika hasil CountIF adalah 0 harus dinetralisir dengan suatu nilai yang bukan 0. CountIF menghasilkan 0 jika tidak ada data, maka kondisi tidak ada data bisa diubah hasilnya menjadi 1 yang setara TRUE. Maka Len(B3:F14)=0 akan bernilai TRUE ketika B3:F14 tidak ada datanya. Bunyi kondisi terhadap CountIF adalah sebagai berikut :
>>> Jika hasil CountIF adalah 0, maka isi dengan Len(B3:F14)=0
>>> Jika hasil CountIF bukan 0, maka isi dengan hasil CountIF
>Secara harfiah, translatenya ke bahasa formula menjadi :
>IF( COUNTIF(B3:F14,B3:F14)= 0 , ( Len(B3:F14)=0 ) , COUNTIF(B3:F14,B3:F14) )
>Dari kalimat ini, sebenarnya jika diperhatikan secara seksama, akan ada benang merah berbunyi :
>"Nilai hasil CountIF atau Len(B3:F14)=0"
>yang bahasa formulanya :
>( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>Hasilnya, akan didapat bahwa seluruh cell yang tidak ada isinya akan bernilai TRUE (setara 1).
>Maka, 1/COUNTIF(B3:F14,B3:F14)
>akan menjadi :
>1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>tetapi, akan terjadi 1/1 ketika cell tidak ada isinya, karena 1/( 0 + TRUE ) = 1/( 0 + 1 ) = 1/1
>Hal ini akan menghasilkan jumlah unique yang tidak tepat. Oleh sebab itu bagian 1 (biru) dalam :
>1/( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) )
>harus berupa pemfilteran bahwa jika cell berisi data maka bernilai 1 dan jika tidak berisi data bernilai 0.
>( Len(B3:F14)>0 )
>Maka formula lengkap :
>=SUMPRODUCT(( Len(B3:F14)>0 ) / ( COUNTIF(B3:F14,B3:F14) + ( Len(B3:F14)=0 ) ) )
>
>3. Cara1.
>untuk versi xl2007 (dengan IFError) array formulanya  (J3)
>=IFERROR(INDEX($H$3:$H$63,MATCH(0,COUNTIF(J$2:J2,$H$3:$H$63),0)),"")
>untuk semua versi (berdasar jumlah item unique yang mungkin) : (K3)
>=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)))
>memiliki benang merah pada bagian yang biru :
>MATCH(0,COUNTIF(K$2:K2,$H$3:$H$63),0)
>Bahasa manusianya :
>"Cari posisi angka 0 pada suatu data array yang berupa nilai-nilai jumlah cacah (CountIF) data dalam $H$3:$H$63 di suatu area K$2:K2 yang pencariannya harus bener-bener persis [0]"
>Kalimat 'nilai-nilai jumlah cacah data dalam $H$3:$H$63 di suatu area K$2:K2' akan menghasilkan angka bukan 0 jika memang telah ada di K$2:K2 dan menghasilkan 0 jika belum ada di K$2:K2. Padahal area K$2:K2 adalah hasil (output). Artinya, kalau sampai hasil CountIF adalah 0, maka data itu belum ada di area output alias data baru. Dengan demikian, fungsi Match tugasnya adalah selalu mendapatkan posisi data baru (data yang belum ada di output).
>Pada kondisi itu, tidak ada pengkondisian bahwa data di $H$3:$H$63 bukanlah bernilai 0.
>Jelas sudah diketahui bahwa data baru (belum ada di output) adalah yang COUNTIF(K$2:K2,$H$3:$H$63)=0
>Kondisi data di $H$3:$H$63 bukanlah bernilai 0 dapat diekspresikan sebagai :
>( $H$3:$H$63 <> 0 )
>
>Sampai disini, sudah ada 2 kondisi :
>1. data baru (belum ada dioutput) :
>( COUNTIF(K$2:K2,$H$3:$H$63)=0 )
>2. tidak adanya nilai di data $H$3:$H$63
>( $H$3:$H$63 <> 0 )
>Keduanya harus terpenuhi berarti setara AND yang setara perkalian.
>Maka array data dalam Match akan berupa :
>( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 )
>Hasilnya adalah 1 (untuk data baru dan nilai data di $H$3:$H$63 bukanlah 0 ) atau 0 (untuk salah satu dari kedua kondisi yang tak terpenuhi).
>Jadi, yang menjadi lookup value (dicari oleh match) bukan lagi angka 0, melainkan angka 1
>Nah... bagian Match akan menjadi :
>MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 )
>
>Array formula lengkap masing-masing :
>1. untuk versi xl2007 :
>=IFERROR(INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ),"")
>
>2. untuk semua versi :
>=IF(ROW()-2>$H$2,"",INDEX($H$3:$H$63,MATCH(1 , ( COUNTIF(K$2:K2,$H$3:$H$63)=0 ) * ( $H$3:$H$63 <> 0 ) , 0 ) ))
>
>Kesimpulannya :
>Pengubahan formula karena adanya perubahan kondisi (bertambah atau berkurang jumlah kondisinya), difokuskan pada penyusunan kondisi-kondisi baru yang menyertakan kondisi awal (sebelum berubah) secara konsisten. Seperti kondisi bahwa jika CountIF 0 artinya sebagai data baru bergabung bersama kondisi baru berupa ada data di suatu area (dengan Len misalnya).
>
>Wassalam,
>Kid.
>
>
>
>
>2012/10/18 M.Ade Alfarid <QA@kkmi.co.id>
>
>Dear,
>>
>>
>>Untuk menghilangkan angka 0 pada list index,
>>tambah rumus apa?
>>
>>Ade
>>
>>
>>
>>
>>On Mon, 15 Oct 2012 16:30:55 +0700, Mr. Kid <mr.nmkid@gmail.com> wrote:
>>
>>
>>> Coba file terlampir.
>>> Ada yang dibantu oleh sebuah kolom untuk menyusun data multi kolom
>>> menjadi
>>> data sekolom.
>>>
>>> Wassalam,
>>> Kid
>>>
>>>
>>> 2012/10/15 M.Ade Alfarid <QA@kkmi.co.id>
>>>
>>>> **
>>
>>>>
>>>>
>>>> BeExceller,
>>>>
>>>> Bagaimana untuk mengurut banyak data beberapa kolom,
>>>> data dobel dihitung sekali saja?
>>>> Terimakasih
>>>> --
>>>> ade
>>>>
>>
>
>
>
>
>
>
>

Fri Oct 19, 2012 2:45 am (PDT) . Posted by:

"Niky_Nugraha@manulife.com"


I am out of the office until 22-10-2012.

Note: This is an automated response to your message "[Caution: Message
contains Suspicious URL content] Re: [belajar-excel] Mendeteksi keystroke
di lembar kerja" sent on 10/19/2012 10:54:53 AM.

This is the only notification you will receive while this person is away.

Fri Oct 19, 2012 5:05 am (PDT) . Posted by:

"rodhy hakim" odhyz83_assasaky

Dear Para Master,
Saya ucapkan banyak-banyakTerima Kasih atas Penjelasannya,
 
Dear Mr. Kid,
Terima kasih juga atas Penjelasannya,
saya jadi takjub dengan kehandalan Excel, tapi saya belum mengerti bagaimana kerja Macro untuk formula : =SUMIFS('BPPB Report'!$G:$G,'BPPB Report'!$C:$C,$A3,'BPPB Report'!$B:$B,B$2)
bagaimana dia mengambil data di BPPB Report lalu menempatkannya di Sheet1.
 
salam,
Odhy

--- Mods ---
Silakan dicoba dulu arahan membuat macronya (7 langkah)
------------

________________________________
From: Mr. Kid <mr.nmkid@gmail.com>
To: belajar-excel@yahoogroups.com
Sent: Thursday, October 18, 2012 12:35 PM
Subject: Re: [belajar-excel] Tanya: Rekapitulasi data dengan Macro

 
Pak Odhy,

Coba pada sheet1 cell B3 :
>> kalau angka 1500 dengan pemisah ribuan di komputer Anda ditulis sebagai 1,500 -> artinya setting regional Inggrismaka bisa pakai formula apa adanya (bisa copas)
>> kalau ternyata 1500 dengan pemisah desimal di komputer Anda ditulis sebagai 1.500 -> setting regional Indonesia, maka ganti semua tanda koma (,) dalam formula menjadi titik koma (;)
>> Formulanya :
=SUMIFS('BPPB Report'!$G:$G,'BPPB Report'!$C:$C,$A3,'BPPB Report'!$B:$B,B$2)

>> kemudian klik kanan cell B3 -> format cells -> tab number -> pilih custom -> tulis di textbox :
general;-general;
>> Setelah itu, copy formula B3 ke seluruh cell di B3:T18

Kalau mau buat macro, coba :
1. save as file lebih dulu, pilih save as type adalah .xlsm atau .xlsb atau .xls, kemudian tekan save
2. ke VBE (tekan ALT  F11)
3. menu Insert -> pilih Module -> hasilnya, akan muncul Module1 di sisi kiri layar (frame Project Explorer)
4. double click si Module1 yang baru saja terbentuk
5. ke lembar kanannya dan tulis prosedur berikut : (sesuaikan penggunaan koma (,) dengan setting regionalsetempat)
public sub BuatRekap()
    range("b3:t18").formula = "=SUMIFS('BPPB Report'!$G:$G,'BPPB Report'!$C:$C,$A3,'BPPB Report'!$B:$B,B$2)"
    activesheet.calculate
    range("b3:t18").value=range("b3:t18").value
    range("b3:t18").numberformat = "General;-General;"
end sub

6. kembali ke worksheet (ALT  F11) dan save (CTRL   S)
7. klik sebuah cell di sheet hasil rekap-> jalankan macro (ALT   F8) -> pilih nama prosedurnya tadi 'BuatRekap' -> tekan Run

Mau buat tombolnya ?
1. insert sebuah shape dengan ribbon Insert -> pilih Shape -> pilih rectangle misalnya -> gambar di worksheet
2. klik kanan si shape tadi -> pilih Assign Macro -> pilih nama prosedurnya 'BuatRekap' -> tekan OK
3. klik sebuah cell di sheet1, kemudian klik si shape
4. save workbook (CTRL  S)

Wassalam,
Kid.

2012/10/18 rodhy hakim <odhyz83_assasaky@yahoo.com>
 
>Dear Master,
>Mohon bantuan membuat Rekapitulasi data dengan menggunakan Macro.
>untuk penjelesannya pada file terlampir.
>terimakasih,
>
>odhy
>

GROUP FOOTER MESSAGE
---------------------------------------------------------------------
bergabung ke milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com

posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com

berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages

melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/

menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com

keluar dari membership milis (UnSubscribe):
kirim mail kosong ke  belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------

Tidak ada komentar:

Posting Komentar