Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 21:34   #1
Rust_12
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 25
По умолчанию VBA_английский алфавит

Очень прошу помощи в написании макроса. Уже в отчаянии,- 2ой день не могу реализовать одну вещь. c VBA Excel знакома 5ый день, помогите, пожалуйста. Даны 2 столбца- А и В. в столбце А в столбик перечислены буквы латинского алфавита. В столбце В- отсортированные в порядке возрастания числа. Необходимо в столбце "С" сформировать значения по следующему правилу: для каждого блока из одинаковых чисел,стоящих в столбце В, каждому значению, присвоить букву алфавита согласно счету его повторения в данном блоке. Ниже привела пример исходных данных и то,что должно получиться в идеале.

A | B
_______
A 1
B 1
C 1
D 1
E 1
F 2
G 2
H 2
I 6
J 7
K 8
L 8
M 8
N 9
O 9
P 10
Q 11
R 11
S 12
T 12
U 12
V 12
W 12
X 13
Y 13
Z 13

В итоге должно получиться:
A__|B___|С___
A 1 A
B 1 B
C 1 C
D 1 D
E 1 E
F 2 A
G 2 B
H 2 C
I 6 A
J 7 A
K 8 A
L 8 B
M 8 C
N 9 A
O 9 B
P 10 A
Q 11 A
R 11 B
S 12 A
T 12 B
U 12 C
V 12 D
W 12 E
X 13 A
Y 13 B
Z 13 C

Помогите,пожалуйста, решить проблему. Я с диапазонами 2 день мучаюсь, уже не один алгоритм перепробовала реализовать,но пока безуспешно..:co nfused:
Rust_12 вне форума Ответить с цитированием
Старый 10.12.2011, 21:37   #2
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Только макросом? Контрольная?

Код:
=СЧЕТЕСЛИ(B$1:B1;B1)
И сюда добавить КОДСИМВ(). Не сложно.

Последний раз редактировалось vikttur; 10.12.2011 в 21:40.
vikttur вне форума Ответить с цитированием
Старый 10.12.2011, 21:43   #3
Rust_12
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 25
По умолчанию

vikttur

Спасибо,что отреагировали
К сожалению, только макросом.
Не контрольная Часть лабораторной работы, - 90% составляющей которой я уже сделала, вот осталось только решить вопрос с формированием этих несчастных значений в столбце С =,(
Rust_12 вне форума Ответить с цитированием
Старый 10.12.2011, 21:50   #4
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Цитата:
Сообщение от Rust_12 Посмотреть сообщение
Не контрольная Часть лабораторной работы...
Какая разница. Здесь не очень жалуют тех, кто желает получить результат "без напряга".
Извините, но ваших потуг, "2ой день не могу реализовать" здесь не видно.
vikttur вне форума Ответить с цитированием
Старый 10.12.2011, 22:07   #5
Rust_12
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 25
По умолчанию

Мне искренне жаль,что у Вас сложилось такое впечатление обо мне. Но я Вас прекрасно понимаю. Все нормально.
Никогда не обращалась по помощью на форумах и не регистрировалась,- при прикреплении файла пишет,что формат некорректный, возможно,
потому что не поддерживает расширение с макросом.
Попробую вставить код.
Sub Кнопка1()
'
Dim x As Integer
row_end = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
x = 2
Do While Cells(x, 3) = Cells(x + 1, 3)
Cells(x, 7) = "yes"
x = x + 1
Cells(x, 7) = "yes"
Loop

Dim iDiapazon As Range, iArea As Range
Set iDiapazon = [G2:G1000]

iCriteria$ = "yes"
For Each iArea In iDiapazon.SpecialCells(xlVisible).A reas
iCount& = iCount& + Application.CountIf(iArea, iCriteria$)

'For Z = 3 To row_end
'Cells(Z, 7).Select
'Range("G1", "G5").Offset(, -5).Select
Range([G2], Cells.SpecialCells(xlCellTypeLastCe ll)).Select
'Range("G1").Offset(, -5).Select
Selection.Copy

ActiveSheet.Paste
Next
'Next
End Sub

Это последний из вариантов реализации.
Вначале я грубо говоря выделила первый блок одинаковых чисел, присвоила значение "yes" в столбце G. Затем я хотела выделить заполненные в этом столбце G строчки, перенести область выделенного диапозона на столбец B (у меня там алфавит в столбец записан), скопировать эту область и переприсвоить скопированные значения в столбец I (а условии задачи я его обозначила через C).
но в итоге происходит все со смещением и копируется к 3-ей строки.
потому и написала,что мучаюсь через диапазоны, ибо из всех предыдущих вариантов реализации этот куда еще не шёл...
Rust_12 вне форума Ответить с цитированием
Старый 10.12.2011, 22:10   #6
Rust_12
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 25
По умолчанию

скриншот прикрепила.
там по кнопке 2 происходит описанная выше ситуация.
по кнопке 1 - еще более дикий вариант.

идея была какая:
Разбить на блоки эти повторяющихся значения и применить к каждому такому блоку процедуру присваения значений алфавита по написанному выше правилу.
но у меня даже для первого блока на текущий момент не получилось корректно это сделать =(
Изображения
Тип файла: jpg ht.jpg (203.7 Кб, 138 просмотров)

Последний раз редактировалось Rust_12; 10.12.2011 в 22:14.
Rust_12 вне форума Ответить с цитированием
Старый 10.12.2011, 22:22   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

выбрал лимит на создание файлов.
Код:
Private Sub CommandButton1_Click()
Dim Shet As Integer
Dim Temp As Integer
Temp = 1
Shet = 0
For n = 1 To 26
If Temp = Cells(n, 2) Then
Shet = Shet + 1
Cells(n, 3) = Chr(64 + Shet)
Else
Shet = 1
Cells(n, 3) = Chr(64 + Shet)
End If
Temp = Cells(n, 2)
Next
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 10.12.2011, 23:05   #8
Rust_12
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 25
По умолчанию

doober

Мое почтение! То,что Вы сделали- это прекрасно !
Спасибо Вам огромное за помощь !!
Мне бы Ваш опыт, скорость действий, активизм и готовность прийти на помощь! )))
...и простите, что относительно долго не отвечала ))
Rust_12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
алфавит Sanyok1993 Паскаль, Turbo Pascal, PascalABC.NET 12 31.03.2011 19:59
Циклический алфавит (c++) nd0ut Помощь студентам 0 17.02.2011 12:07
Алфавит. the_deer_one Общие вопросы C/C++ 2 13.09.2010 14:53
Алфавит blok20 Помощь студентам 0 17.04.2010 20:55
Алфавит Mikimaus Общие вопросы C/C++ 7 17.11.2009 19:15