2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Объединение столбцов в excel
Сообщение01.04.2024, 07:50 
Здравствуйте!

Даны два столбца с целыми числами длиной в 10 000 ячеек. Для определенности: первый столбец последовательность целых чисел в разложении которых на простые множители не больше 3-x простых чисел( с учетом их кратности). Второй столбец: 23-гладкие (-smooth) числа, то есть числа, имеющие в разложении на простые множители максимальный простой множитель 23. Последовательности взяты с известного сайта( A037144 и A080683)

Надо получить столбец, содержащий только числа, входящие в оба столбца, то-есть, целые числа в разложении которых на простые множители не больше трех и максимальный множитель - 23.

Я так понимаю, надо в ячейки записать соответствующие логические выражения, а затем убрать лишние со сдвигом вверх. Помогите пожалуйста написать логическое выражение. Заранее благодарен

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 08:38 
Аватара пользователя
druggist, Осваивайте Basic, встроенный в Excel.

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 08:49 
Аватара пользователя
Как-то так, наверное
Код:
Sub foo()
    Dim N
    Dim NN()
    N = 0
    For Each cell1 In Worksheets("Лист1").Range("A1:A8")
        For Each cell2 In Worksheets("Лист1").Range("B1:B8")
            If cell1 = cell2 Then
                N = N + 1
                ReDim Preserve NN(N)
                NN(N) = cell1
            End If
        Next
    Next
    For I = 1 To N
        Worksheets("Лист1").Cells(I, 3) = NN(I)
    Next
End Sub

Можно с ВПР попробовать еще, если не лезть в VBA.

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 09:52 
druggist
Попробуйте так

=FILTER(B1:B10000; COUNTIF(A1:A10000;B1:B10000))

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 11:17 
druggist
А ещё проще перекинуть эти данные в Matlab/GNU Octave и там легко проделать операцию.

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 11:42 
druggist
А сколько вам их надо? В смысле, это именно упражнение с экселем на таком примере и столбцы могут быть и другие, или интересует кокретно пересечение этих двух множеств?

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 12:51 
Аватара пользователя
druggist
В третьем столбце функция СЧЕТЕСЛИ (посмотрите доку на неё), и фильтр по третьему столбцу "не равно нулю".
Еще удобно в некоторых случаях пользоваться функцией ВПР, и фильтр "все, кроме #НД".

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 17:27 
Спасибо за ответы, забыл сказать, что у меня excel 2010, не уверен, есть ли такие функции как FILTER или ФИЛЬТР.

wrest в сообщении #1634996 писал(а):
или интересует кокретно пересечение этих двух множеств?

Да, именно этих двух множеств(3 и 23 взяты для определенности)

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 17:50 
Аватара пользователя
druggist в сообщении #1635033 писал(а):
забыл сказать, что у меня excel 2010, не уверен, есть ли такие функции как FILTER или ФИЛЬТР.


Если честно, не знаю, как навесить фильтр через функции.
Но фильтрация по столбцам - это стандартный древний функционал. Её просто нужно включить, и на заголовках столбцов появится кнопочка, через которую можно установить фильтр.

Кстати, Вы знаете, как проставить (скопировать) функцию во всему столбцу любой длины в два клика мышки?
А также, знаете ли, что означает символ "$" в аргументах функций?
Это очень удобные полезные фичи.

 
 
 
 Re: Объединение столбцов в excel
Сообщение01.04.2024, 19:32 
druggist в сообщении #1635033 писал(а):
Да, именно этих двух множеств(3 и 23 взяты для определенности)

А терминах баз данных эта операция называется inner join (ну а математически - пересечение множеств).
Если это однократная задача, и вы поделитесь через файлообменник двумя текстовыми файлами (в каждом своё множество), я вам сделаю их пересечение.
Если задача повторяющаяся, готовы ли вы рассмотреть что-то кроме экселя?

 
 
 
 Re: Объединение столбцов в excel
Сообщение02.04.2024, 07:54 
wrest в сообщении #1635041 писал(а):
Если задача повторяющаяся, готовы ли вы рассмотреть что-то кроме экселя?

Задача, которая мне интересна, это найти эту последовательность как функцию - $a(n, k, P) $ - возрастающую последовательность целых чисел, в разложении которых на простые множители, их не больше $k$(с учетом их кратности) и максимальный простой множитель не превосходит $P$. В данном случае к=3, Р=23. Думаю, что как-нибудь с ней справлюсь. И, конечно, не обязательно с помощью экселя. Но в данный момент у меня конкретный вопрос: функция, которую надо записать в ячейку. Убрать пустые места, отсортировав по убыванию(или возрастанию) даже с моими убогими навыками это не проблема)

 
 
 
 Re: Объединение столбцов в excel
Сообщение02.04.2024, 08:06 
Аватара пользователя
Для такой задачи Excel определенно не лучший выбор.
Если есть возможность, возьмите что-то более подходящее.

 
 
 
 Re: Объединение столбцов в excel
Сообщение02.04.2024, 08:12 
Аватара пользователя
druggist в сообщении #1635081 писал(а):
Но в данный момент у меня конкретный вопрос: функция, которую надо записать в ячейку.


Пусть у Вас в первой строке названия столбцов, а данные начинаются со второй строки, и занимают два столбца (A и B)
Тогда в ячейке С2 пишите
Код:
=СЧЁТЕСЛИ(A$2:A$10001;B2)

Эта функция посчитает, сколько раз значение из ячейки B2 встречается в диапазоне A2:A10001.
Далее копируете эту функцию на весь столбец С (это можно сделать мышкой, либо "растягивая" вниз эту ячейку за маленький квадратик в углу ячейки, либо двойным кликом левой кнопкой по этому маленькому квадратику в углу ячейки).

При копировании:
а) диапазон сдвигаться не будет, это запрещают символы "$".
б) а вот номер ячейки во втором операнде - будет.
В результате, например в ячейке C10, будет такая функция:
Код:
=СЧЁТЕСЛИ(A$2:A$10001;B10)


Фильтруете по столбцу C по условию "больше нуля" и наслаждаетесь результатом.

-- 02.04.2024, 08:13 --

пианист в сообщении #1635082 писал(а):
Для такой задачи Excel определенно не лучший выбор.


В Excel это делается 5-10 кликами мышки, и несколькими нажатиями на клавиатуре.

 
 
 
 Re: Объединение столбцов в excel
Сообщение02.04.2024, 08:27 
Аватара пользователя
EUgeneUS в сообщении #1635083 писал(а):
В Excel это делается 5-10 кликами мышки

Я не знаю, в каком диапазоне лежат числа, интересующие автора темы, но предполагаю, что они слишком велики для Excel'а.
Да и просто не понимаю, для чего Excel выбран. В том же python'е и кликать ничего не надо, даже доп. библиотеки не нужны, у всякого множества есть метод intersection(). Например.

 
 
 
 Re: Объединение столбцов в excel
Сообщение02.04.2024, 09:08 
GNU Octave (это бесплатный аналог Matlab) легко скачать и установить.
Там легко импоритровать массивы из текстового файла и легко одной командой найти пересечение:
Используется синтаксис Matlab M
intersect(x,y)

Вообще, инструмент очень полезный, много чего позволяет сделать (гораздо больше чем Excel).
Есть смысл освоить.

 
 
 [ Сообщений: 24 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group