Я разрабатываю программу для анализа данных. Я очень новичок в Visual Basic и Macros. У меня есть 2 столбца A и B, которые имеют значения между .001 и 1. Мне нужна помощь в создании бункеров для хранения этих чисел. Я провел исследования и посмотрел на множество примеров программ, ничего отдаленно близко к тому, что мне нужно. Вот несколько важных деталей. Столбец A потребовал данных от A1 до A2625, а в столбце B - данные от B1 до B2700. Мне нужно поместить эти данные в 10 бункеров. Пример: бит 1 должен содержать значения от .001 до .11, бит 2- .12-.20 ..... до бункера 10. Любые предложения? Спасибо!Создание кода для anaylist
ответ
В VBA вы будете создать макрос, который что-то вдоль линий
Option Explicit
Sub myMacro()
Dim nRow As Integer
Dim wSht As Worksheet
Dim endRowColumn1 As Integer
Dim endRowColumn2 As Integer
Set wSht = ActiveWorkbook.Sheets(1)
endRowColumn1 = wSht.Cells(Rows.Count, 1).End(xlUp).Row
endRowColumn2 = wSht.Cells(Rows.Count, 2).End(xlUp).Row
' Clear results from last run
wSht.Range("C:E").Clear ' Clear rows 3,4,5
wSht.Cells(1, 3) = "Bin1"
wSht.Cells(1, 4) = "Bin2"
wSht.Cells(1, 5) = "No Criteria Met"
' STARTING WITH SECOND ROW
For nRow = 2 To endRowColumn1 ' For each row... to the end of your rows..
' If the first bin criteria is met...
If (wSht.Cells(nRow, 1) >= 0.001) And _
(wSht.Cells(nRow, 1) < 0.12) Then
' Then put the value into the first bin. (column C)
wSht.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = wSht.Cells(nRow, 1)
ElseIf (wSht.Cells(nRow, 1) >= 0.12) And _
(wSht.Cells(nRow, 1) < 0.2) Then
' Then put the value into the second bin. (column D)
wSht.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0) = wSht.Cells(nRow, 1)
Else ' No Criteria Met
wSht.Cells(Rows.Count, 5).End(xlUp).Offset(1, 0) = wSht.Cells(nRow, 1)
End If
Next nRow
For nRow = 2 To endRowColumn2 ' For each row... to the end of your rows..
' If the first bin criteria is met...
If (wSht.Cells(nRow, 2) >= 0.001) And _
(wSht.Cells(nRow, 2) < 0.12) Then
' Then put the value into the bin. (column C)
wSht.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = wSht.Cells(nRow, 2)
ElseIf (wSht.Cells(nRow, 2) >= 0.12) And _
(wSht.Cells(nRow, 2) < 0.2) Then
' Then put the value into the second bin. (column D)
wSht.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0) = wSht.Cells(nRow, 2)
Else ' No Criteria Met
wSht.Cells(Rows.Count, 5).End(xlUp).Offset(1, 0) = wSht.Cells(nRow, 2)
End If
Next nRow
End Sub
Пожалуйста, дайте мне знать, если у вас есть вопросы о коде, и мы можем это обсудить.
Вам не нужен VBA для этого. В Excel есть функция, называемая Frequency. Если у вас есть номера в одном колонке вы делаете ваши мусорные ведра в другой колонке, как этот
+--------+------+
| values | bins |
+--------+------+
| 59 | 0 |
| 16 | 10 |
| 12 | 20 |
| 5 | 30 |
| 33 | 40 |
| 90 | 50 |
| 92 | 60 |
| 74 | 70 |
| 26 | 80 |
| 63 | 90 |
| 40 | 100 |
| etc| |
+--------+------+
, то вы можете использовать
FREQUENCY(values,bins)
Я должен быть точно таким же, как это, хотя, потому что это формула массива:
Примечание у меня есть все клетки, прилегающих к закромам выбранных, и я нахожусь в режиме редактирования в верхней ячейке. Затем, как только формула будет записана, вы нажмете ctrl + alt + enter, и все выбранные вами ячейки заполнят количеством вхождений для этого бина.
Это будет работать с несколькими столбцами.
Сделать гистограммные графы с частотой v.
Что бы вы не сделали, это создать бункеры для вас.
Я знаю, как добиться этого благодаря превосходству. Сложность в том, что мне нужно все запрограммированное, чтобы оно могло автоматически выполнять funtion –
- 1. Создание кода для прокси-серверов
- 2. Matlab: Создание кода для coinflip
- 3. Создание кода инициализации для .dll
- 4. Создание кода для повторного использования
- 5. Создание плагина для подсказки кода
- 6. Создание цикла для кода BMP085?
- 7. создание кода для множественного наследования
- 8. Создание UML для кода Java
- 9. Создание кода хэша для объекта
- 10. Создание моего кода для написания плагинов для
- 11. C++ Создание писателя кода
- 12. Компиляция кода - создание IDE
- 13. Создание редактора веб-кода
- 14. Создание кода автоматического фильтра
- 15. Создание псевдослучайного кода
- 16. Создание кода Python Pythonic
- 17. Создание хорошего хэш-кода (GetHashCode) для BitArray
- 18. Создание объекта для быстрого создания кода
- 19. Создание кода подтверждения для утерянного пароля?
- 20. Создание кода для другого языка в Haskell
- 21. Создание модульных тестов для устаревшего кода багги
- 22. Создание двоичного дерева поиска для кода Морзе
- 23. Создание подписывания кода Cert для .NET
- 24. Создание Perl для двоичного кода отдельно
- 25. Создание кода Matlab для C++ (формат hdf5)
- 26. Создание пакета R для исходного кода python
- 27. Создание кода обработки WebRTC ТОЛЬКО для iOS
- 28. Создание банка кода для моей команды
- 29. Создание кода AMD для узла и браузера
- 30. создание функции jQuery для уменьшения кода
Помогите мне понять. Если бы я сделал аналогичную программу, это бы помещало оба столбца в бункеры, или мне пришлось бы делать это за столбец. И нужно ли мне указывать строку/столбец для хранения или создания этих ящиков? Я просто добрался до этой части и застрял. –
В этой конкретной программе я написал только первый столбец. Таким образом, вам понадобится другой оператор IF для другого столбца и другой оператор IF для другого бина. Вам нужно будет указать столбец для хранения этих бункеров. Вы можете сделать код для столбца B, скопировав весь цикл «за» и заменив значение endRow, а также изменив nRow, 1 на nRow, 2 и затем nRow, 3 на nRow, 4. Кроме того, я не удаляю «пробелы» из столбца бункеров. Но вы всегда можете это сделать позже. –
Кроме того, обратите внимание, что вы можете легко создать гистограмму с помощью AnalysisToolPak? https://support.office.com/en-us/article/Create-a-histogram-B6814E9E-5860-4113-BA51-E3A1B9EE1BBE --- Я не знаю вашей конечной цели этих бункеров. –