Как найти все делители числа эксель

 

dalton

Пользователь

Сообщений: 32
Регистрация: 27.01.2013

Здравствуйте!
Нужно извлечь из заданного числа, все его значения целых делителей.
Формулой у меня не получается.

Прикрепленные файлы

  • Книга1.xls (48.5 КБ)

 

Вообще-то, делители — простые числа. Так, для 20 делителями являются 2 и 5, но не являются 4 и 10…

 

dalton

Пользователь

Сообщений: 32
Регистрация: 27.01.2013

Понятно, но нужно именно как в примере, разве что возможно кроме единицы и наибольшего делителя.

 

Первую половину делителей можно как в файле; вторую — получить частные от деления числа на делители.

 

dalton

Пользователь

Сообщений: 32
Регистрация: 27.01.2013

#5

30.06.2013 19:16:17

Спасибо, подкорректирую.

MyExcel_17

Заблокирован

1

27.03.2017, 00:42. Показов 14164. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем доброй ночи!

Прошу помощи. Как правильно показать в ячейках Excel все делители заданного числа? Именно в ячейках Excel!
Пусть число 34, тогда его делители: 1; 2; 17; 34.

Прошу не предлагать: MsgBox и Debug.Print — эти способы мне известны.

На картинке, ниже, код Excel неверно выводит делители у меня: 34; 34; 34; 34. Как исправить?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Перечислить_все_делители_в_ячейках()
n = InputBox("N=")
[A1] = n
For i = 1 To n
  If n Mod i = 0 Then s = s + i
Next i
[B1] = s
'где s сумма всех делителей числа 34
Debug.Print s
For i = 1 To n Step 1
    If n Mod i = 0 Then Debug.Print "i ="; i
        'перечисляются все делители числа 34
    Next i
For j = 1 To n Step 1
    If n / j = n  j Then
      Range("C1:C4") = j
    End If
    Next j
End Sub

Миниатюры

Как показать в ячейках Excel все делители заданного числа?
 



0



k61

85 / 82 / 31

Регистрация: 13.10.2014

Сообщений: 167

27.03.2017, 03:16

2

Лучший ответ Сообщение было отмечено MyExcel_17 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
.......
For j = 1 To n Step 1
  If n / j = n  j Then
  Range("C1").Offset(f) = j
  f = f + 1
  End If
Next j
End Sub



1



MyExcel_17

Заблокирован

27.03.2017, 08:28

 [ТС]

3

Цитата
Сообщение от k61
Посмотреть сообщение

Range(«C1»).Offset(f) = j f = f + 1

k61, спасибо. Ещё вопрос. Как можно сделать, чтобы показывались делители по столбцам (C3:F3), заданное число 34, код ниже. Смотрите строку 21.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Александр9797_делители_числа()
Dim n, i, imax As Integer
n = InputBox("Введите натуральное число? ") + 0
If n < 1 Then
  MsgBox "Плохое число"
  Exit Sub  'досрочный выход из процедуры
End If
imax = Int(n ^ 0.5)
For i = 1 To imax
  If n / i = n  i Then
    koldev = koldev + 2
    sumdev = sumdev + i + n  i
  End If
Next i
If imax = n ^ 0.5 Then 'случай целого значения корня из n
  koldev = koldev - 1
  sumdev = sumdev - imax
End If
Cells(1, 1) = "Число:": Cells(1, 3) = n
Cells(2, 1) = "Кол-во делителей:": Cells(2, 3) = koldev
Cells(3, 1) = "Делители числа:": Cells(3, 3) = "не знаю, как показать для ячеек Excel"
Cells(4, 1) = "Сумма делителей:": Cells(4, 3) = sumdev
End Sub



0



85 / 82 / 31

Регистрация: 13.10.2014

Сообщений: 167

27.03.2017, 09:10

4

Нужны делители не превышающие значения переменной imax ?



0



MyExcel_17

Заблокирован

27.03.2017, 16:05

 [ТС]

5

Цитата
Сообщение от k61
Посмотреть сообщение

Нужны делители не превышающие значения переменной imax ?

k61, наверно Вы ошибаетесь.

Кто понимает, подскажите пожалуйста, как сделать смещение делителей числа 34 не вниз по строкам, а вправо по столбцам (C4:F4). Картинка и код ниже.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub Александр9797_делители_числа()
Dim n, i, imax As Integer
n = InputBox("Введите натуральное число? ") + 0
If n < 1 Then
  MsgBox "Плохое число"
  Exit Sub  'досрочный выход из процедуры
End If
imax = Int(n ^ 0.5)
For i = 1 To imax
  If n / i = n  i Then
    koldev = koldev + 2
    sumdev = sumdev + i + n  i
  End If
Next i
If imax = n ^ 0.5 Then 'случай целого значения корня из n
  koldev = koldev - 1
  sumdev = sumdev - imax
End If
For J = 1 To n Step 1
  If n / J = n  J Then
  Range("C4").Offset(f) = J
  f = f + 1
  End If
Next J
Cells(1, 1) = "Число:": Cells(1, 3) = n
Cells(2, 1) = "Кол-во делителей:": Cells(2, 3) = koldev
Cells(3, 1) = "Сумма делителей:": Cells(3, 3) = sumdev
Cells(4, 1) = "Делители числа:": Cells(4, 5) = "не знаю, как задать код для ячеек (C4:F4) Excel"
 
End Sub

Миниатюры

Как показать в ячейках Excel все делители заданного числа?
 



0



k61

85 / 82 / 31

Регистрация: 13.10.2014

Сообщений: 167

28.03.2017, 02:26

6

Лучший ответ Сообщение было отмечено MyExcel_17 как решение

Решение

Добавьте запятую перед счётчиком «f»:

Visual Basic
1
2
3
...
 Range("C4").Offset(, f) = J
...



1



Формулировка задачи:

Всем доброй ночи!
Прошу помощи. Как правильно показать в ячейках Excel все делители заданного числа? Именно в ячейках Excel!
Пусть число 34, тогда его делители: 1; 2; 17; 34.

Прошу не предлагать: MsgBox и Debug.Print — эти способы мне известны.

На картинке, ниже, код Excel неверно выводит делители у меня: 34; 34; 34; 34. Как исправить?

Код к задаче: «Как показать в ячейках Excel все делители заданного числа?»

textual

...
 Range("C4").Offset(, f) = J
...

Полезно ли:

8   голосов , оценка 3.875 из 5

Использование массивов позволяют упростить многие вычисления.
В частности все манипуляции, описанные в статье «Является ли число простым», можно заменить одной формулой.

Пусть в ячейке A1 находится число и нужно проверить простое ли оно. Достаточно в ячейку B1 ввести такую формулу:

=ЕСЛИ(МИН(ОСТАТ(A1;СТРОКА(ДВССЫЛ(«2:»&ОКРУГЛ(КОРЕНЬ(A1);)))))=0;»составное»;»простое»)

Можно пойти еще дальше и записать в ячейке C1 формулу:

=СУММ(—(ОСТАТ(A1;СТРОКА(ДВССЫЛ(«1:»&A1)))=0))

Эта формула покажет сколько у числа в ячейке A1 делителей.
Например, для числа 12 количество делителей будет 6, а именно 1, 2, 3, 4, 6 и само число 12.

Указанные формулы используют массивы, поэтому после окончания ввода нужно нажать CTRL+SHIFT+ENTER.

Похожие по тематике посты — еще почитать:

Поиск делимого и делителя для известного частного

serega

Дата: Среда, 10.09.2014, 22:24 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

В общем суть проблемы: есть массив из 210 чисел, полученных путем умножения одних чисел на другие. Нужно, чтобы формула находила в этом массиве искомый результат, путем деления одного числа (раннее полученного путем умножения одних чисел на другие) на другое. Чтобы числитель и знаменатель были переменными и использовала все имеющиеся комбинации в этом массиве из 210 чисел, при поиске заданного результата и выделила этот результат с указанием от каких чисел получен этот результат. Например, формула ищет заданное мной искомое число 0,324, его можно получить, например от: находит в массиве два числа 3888 (получено от умножения 54*72) и 12000 (получено от 100*120), 3888/12000=0,324 и указывает связь от деления какого числа на какое получился искомый результат. Как то так.


лалала

Сообщение отредактировал seregaСреда, 10.09.2014, 22:31

 

Ответить

Nic70y

Дата: Среда, 10.09.2014, 22:30 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 8223


Репутация:

2027

±

Замечаний:
0% ±


Excel 2010

файл покажете?


ЮMoney 41001841029809

 

Ответить

serega

Дата: Среда, 10.09.2014, 22:35 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Файл приложил.


лалала

 

Ответить

alex1248

Дата: Среда, 10.09.2014, 22:59 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 384


Репутация:

71

±

Замечаний:
0% ±


Excel 2007, 2010

Мне кажется, без макроса тут не обойтись.
Хотя на форуме есть специалисты, порой такие чудеса формулами творят. :)


skype alex12481632
Qiwi +79276708519

 

Ответить

serega

Дата: Среда, 10.09.2014, 23:39 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Мне важен результат, а какими функциями exel это будет достигнуто — не важно. Так что прошу спецов о помощи


лалала

 

Ответить

Nic70y

Дата: Четверг, 11.09.2014, 08:54 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 8223


Репутация:

2027

±

Замечаний:
0% ±


Excel 2010

Куча формул массива и немассива, для начала

изменил файл (так правильнее)

К сообщению приложен файл:

9127.xlsx
(59.9 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70yЧетверг, 11.09.2014, 10:13

 

Ответить

serega

Дата: Четверг, 11.09.2014, 21:46 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Гениально!!! Очень благодарен. Но тяжеловато разобраться со связями. Это в общем расчет подбора сменных шестеренок для нарезки специфических (китайских, американских…) резьб на токарном станке, и мне нужно знать какие для этого нужны шестерни. Первый столбец — это кол-во зубьев шестеренок, используются для этого четыре, искомый результат — это передаточное отношение, оно вычисляется (А*В)/(Б*Г) или (54*72)/(100*120)=0,324 мне нужно было 13 ниток на дюйм, но верное передаточное отношение 0,326 (дюйм 25,4/13ниток =1,954 шаг резьбы, передаточное- 1,954/6 шаг винта = 0,326, по этому из имеющихся, пытаюсь найти приближенное значение. Может быть можно как то цветом помечать в моей таблице, из каких шестерен получился искомый результат, например желтым — первый вариант (два значения, например 3888 и 12000), зеленым — второй… Тогда я буду видеть какие шестерни задействовать. Или рядом чтобы был столбец в котором указывается 3888 это А- 54 В- 72; 12000 это Б- 100 Г- 120. Так возможно?


лалала

 

Ответить

serega

Дата: Пятница, 12.09.2014, 21:31 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Уважаемые специалисты, помогите доработать таблицу, у меня моих знаний exel не достаточно для завершения таблицы.


лалала

 

Ответить

Nic70y

Дата: Воскресенье, 14.09.2014, 08:11 |
Сообщение № 9

Группа: Друзья

Ранг: Экселист

Сообщений: 8223


Репутация:

2027

±

Замечаний:
0% ±


Excel 2010

serega, я думаю вам к макрописцам или туда:
http://www.excelworld.ru/forum/6

ну или на крайняк см. мой файл.
(косо как-то идет — не варит бошка сегодня)
[moder]А что это название темы у нас такое информативное?
Прозевали мы.
Однако, лучше поздно, чем никогда — serega, меняйте название согласно Правилам форума. Иначе тему закрою и Вам замечание влеплю.
Кстати, вполне возможно, что ответов поэтому и нет.

К сообщению приложен файл:

9132.xlsx
(63.7 Kb)


ЮMoney 41001841029809

 

Ответить

serega

Дата: Воскресенье, 14.09.2014, 21:55 |
Сообщение № 10

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Может быть назвать тему «поиск частного от делимого и делителя»? Строго не судите за название, сам не знал как назвать этот процесс. И как отредактировать название темы — не разберусь, в общем новичок я на форуме. И за решение, еще раз огромное спасибо, сейчас буду разбираться.
[moder]Тогда уж «поиск делимого и делителя для известного частного». Или что-то в этом роде.
Зайдите в редактирование своего первого поста — там можно отредактировать название темы.


лалала

Сообщение отредактировал seregaВоскресенье, 14.09.2014, 22:00

 

Ответить

serega

Дата: Воскресенье, 14.09.2014, 23:46 |
Сообщение № 11

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Последний текст редактированию подлежит, а первый — нет, возможно у меня не достаточно прав для этого.
[moder]Поменял.
В следующий раз следуйте Правилам форума, договорились?


лалала

 

Ответить

ikki

Дата: Понедельник, 15.09.2014, 04:06 |
Сообщение № 12

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

макросом. на втором листе. (первый не используется, оставлен «просто так»)

К сообщению приложен файл:

4419791.xlsm
(80.1 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

ikki

Дата: Понедельник, 15.09.2014, 04:31 |
Сообщение № 13

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

вариант без словаря, только на массивах.
должен быть побыстрее (хотя и предыдущий не особо тормозной :) )

К сообщению приложен файл:

___.xlsm
(23.0 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

MCH

Дата: Понедельник, 15.09.2014, 09:01 |
Сообщение № 14

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


вариант без словаря, только на массивах.

[vba]

Код

ReDim am(1 To (UBound(a) ^ 2) / 2, 1 To 2)

[/vba]
Саш, память не экономим, избыточное определение массивов :)

Можно так:
[vba]

Код

ReDim am(1 To UBound(a) * (UBound(a) — 1) 2, 1 To 2)

[/vba]

 

Ответить

ikki

Дата: Понедельник, 15.09.2014, 09:50 |
Сообщение № 15

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

[offtop]Миш, это называется «в 6 утра после бессонной ночи голова работать отказывалась категорически» :D [/offtop]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

shanemac51

Дата: Понедельник, 15.09.2014, 10:55 |
Сообщение № 16

Группа: Проверенные

Ранг: Новичок

Сообщений: 33


Репутация:

4

±

Замечаний:
0% ±


Цитата

его можно получить, например от: находит в массиве два числа 3888 (получено от умножения 54*72) и 12000 (получено от 100*120), 3888/12000=0,324

насколько мне помнится, есть еще какое то условие , типа зацепление
на каком то форуме тема решалась

 

Ответить

serega

Дата: Понедельник, 15.09.2014, 13:34 |
Сообщение № 17

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Ну Вы даете :o !!! Мы такое в институте не учили. Гениально в квадрате! Очень благодарен за новые открытия!!!


лалала

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Как найти сигнал спутниковой антенны триколор самостоятельно
  • Как в ворде найти смайлики
  • Как найти чанки сайта
  • Как найти открытые вкладки на телефоне
  • Как найти матрицу на ноутбук