Bir elektronik tabloda iki liste (benzersiz kümeler) var ve ikisinin kesişimini almak istiyorum.
Bunu yapmanın kolay bir yolu var mı?
İşte elde etmek istediğim şeyin bir örneği:
Liste 1 Liste 2 Beklenen sonuç a 1 e b 2 f ce d 4 ef f 6
Bir elektronik tabloda iki liste (benzersiz kümeler) var ve ikisinin kesişimini almak istiyorum.
Bunu yapmanın kolay bir yolu var mı?
İşte elde etmek istediğim şeyin bir örneği:
Liste 1 Liste 2 Beklenen sonuç a 1 e b 2 f ce d 4 ef f 6
Yanıtlar:
GAZ'a atlamaya gerek yoktur, standart elektronik tablo işlevleri bunu kolayca halleder.
Lütfen aşağıdakileri örneğinizdeki bir hücreye yapıştırın
=iferror(filter($A$2:$A, match($A$2:$A, B2:$B , false)), "no match")
Eşleme fonksiyonu bir eşleşme bulunursa haricinde hataların tam aralıklarının bir kartezyen bir ürün üretir. Bir eşleşme zaman 2 aralığa bir dizin döndürür edilir bulundu.
Filtre fonksiyonu uzakta martavallara geri döndürür doğru endeksli değerler atar.
IFERROR hiç hiçbir eşleşme yoksa bir derli toplu bir sonuç almak için yardımcı olur.
Aralıklar, $ A $ 2: $ A deyimiyle belirtildiği gibi herhangi bir uzunlukta olabilir.
Bu küçük komut dosyası iki aralığı bir formül olarak karşılaştıracaktır:
function COMPARE(array1, array2) {
var array = [];
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
array.push([array1[i][0]]);
}
}
}
return array;
}
Sayfanıza D2 hücresine aşağıdaki formülü ekleyebilirsiniz:
=COMPARE(A2:A7,B2:B7)
Komut dosyasını araçlar menüsü, komut dosyası düzenleyicisi aracılığıyla ekleyin.
İki aralığın (aralık 1'deki aralık 2'deki olmayan öğeler) nasıl çıkarılacağını arıyorsanız, örneğin:
List 1 List 2 Expected result
a 1 a
b 2 b
c e c
d 4 d
e f
f 6
İşte size bir formül:
=iferror(filter($A$2:$A, iserror(match($A$2:$A, B2:$B , false))), "no match")
Bu küçük komut dosyası iki aralığı bir formül olarak karşılaştıracaktır:
function intersect(array1, array2) {
var array = [];
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
array.push([array1[i][0]]);
}
}
}
return array;
}
Ekstra:
function extersect(array1, array2) {
var array = [];
var tmp = true;
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
tmp = false;
}
}
if(tmp == true)
{
array.push([array1[i][0]]);
}
tmp = true;
}
return array;
}
Sayfanıza D2 hücresine aşağıdaki formülü ekleyebilirsiniz:
=intersect(A2:A7,B2:B7)
Komut dosyasını araçlar menüsü, komut dosyası düzenleyicisi aracılığıyla ekleyin.
= kesişim (A2: A7, B2: B7) her iki dizi dizisi de, dizi2'de bulunan sonuçları döndürür.
= extersect (A2: A7, B2: B7), B2: B7 aralığında bulunmayan dizi1 değerlerini döndürür