Как объединить два списка в один длинный список?

У меня есть два списка в coloumns 1 и 2. Мне нужен столб 3 формата, один тире два.

например:

enter image description here

столбец C нужно будет повторить все значения A и B.

Я предпочел бы формулу для этого возможно, если нет, то я мог бы использовать VBA. Кроме того, мои данные не так просты, как ABC и 123.

22
задан vaxquis
08.11.2022 13:34 Количество просмотров материала 3040
Распечатать страницу

3 ответа

то, что вы ищете, называется "Декартова Произведения" или "внешнее соединение".

решение как VBA. Скопируйте следующий код в правую часть редактора Visual Basic. Вы увидите, что ваш макрос теперь имеет имя "cartesianproduct": (Source)

Sub cartesianproduct()
Dim startrange As Range

range1 = Application.InputBox(Prompt:="Please Select First Range", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Second Range", Type:=8)
Set startrange = Application.InputBox(Prompt:="Please select where you want to put it", Type:=8)

array1 = [range1]
array2 = [range2]

startrange.Select
For i = 1 To UBound(array1)
    For x = 1 To UBound(array2)
        z = z + 1
        ActiveCell.Offset(z, 0).Value = array1(i, 1)
        ActiveCell.Offset(z, 1).Value = array2(x, 1)
    Next
Next
End Sub

Я тоже нашел здесь решение в виде формулы (не проверял!):

=ЕСЛИ(СТРОКА()-СТРОКА($Е$1)+1>СЧЕТЗ(А:В)*СЧЕТЗ(Б:Б),"",ИНДЕКС(А:А,ТИП INT((СТРОКА()-СТРОКА($Е$1))/СЧЕТЗ(Б:Б)+1)) & " -" & ИНДЕКС(B:B,MOD (ROW ()-СТРОКА ($F$1),СЧЕТ (B:B))+1)

Я только добавил " -" между обоими значениями ...

6
отвечен duDE 2022-11-09 21:22

вот еще одна формула: введите C1 и заполняйте, пока не получите пробелы:

=IFERROR(INDEX(Col_A,INT((ROWS(:1)-1)/COUNTA(Col_B))+1) & "-" &INDEX(Col_B,MOD(ROWS(:1)-1,COUNTA(Col_B))+1),"")

я использовал динамические имена для ссылки на данные столбца; вы можете изменить это:

Col_A   refers to:  =OFFSET(Sheet1!$A,0,0,COUNTA(Sheet1!$A:$A))
Col_B   refers to:  =OFFSET(Sheet1!$B,0,0,COUNTA(Sheet1!$B:$B))
2
отвечен Ron Rosenfeld 2022-11-09 23:39

поскольку duDE уже предложил одно решение с VBA, я хотел бы показать другое с Javascript.

Вы можете легко манипулировать Excel, кодируя Javascript с помощью одного инструмента с именем Funfun. Вот основной код:

<script>
var column1 = new Array();
  for(var i=0; i<$internal.column1.length; i++){
   column1[i] = $internal.column1[i]
  };
var column2 = new Array();
  for(var i=0; i<$internal.column2.length; i++){
   column2[i] = $internal.column2[i]
  };
var added = $internal.add;
console.log(added);
var output = new Array();
for(var i=0; i<$internal.column2.length; i++){
   output[i] = column1[i] + added + column2[i];
  };
  console.log(output);
$internal.result = output;

$ internal-это API, предоставляемый Funfun, который помогает вам получить доступ к данным в электронной таблице Excel. Вы можете изменить данные и их область в настройках. Ниже приведен параметр этого функция:

{
"add": "=C2",
"column1": "=A2:A9",
"column2": "=B2:B9",
"result": {
    "Type": "Output",
    "Address": "=D2:D9"
}

одним щелчком мыши все данные и результаты будут загружены в электронную таблицу. Как показано на следующем рисунке: Screenshot

и последнее, но не менее важное: Funfun также предоставляет версию веб-сайта, с помощью которой вы можете написать свою собственную функцию более уютно. The ссылка этой функции

надеюсь, что это помогает :)

1
отвечен yi liang 2022-11-10 01:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх