Помогите придумать 5 вопросов по VBA и Excel?
Перепиши эту штуку на VBA и спрашивай, где тут ошибка. Если начнут искать ошибку в синтаксисе - угощай ядом
ну а чё, сам, наверное, понимаешь, что код с ошибками грамматическими - говно полное, язык любой выучинь мона (а уж тем более ВБА при помощи интернета того же) - за сутки Алгоритм вот - другое дело По екселю - какие-нить фунцкии модные попроси применить, больше вроде ничего.
давай по ВБА список конкретных вопросов.
по екселю вот примерно (добавляйте):
1. По фильтрам отфильтровать чуваков
2. ВПР
3. Вопросик на сводные таблицы
4. Если, Суммесли, Счётесли и т.п.
5. Ты знаешь ексель?
Транспонировать матрицу.
Может просто спросить - типа того:
Необходимо написать макрос, который делает <подставить нужное>. Ваши действия для реализации.
Правильный ответ - посмотрю справку по VBA/поботаю MSDN/посмотрю в инете.
Есть столбец с ФИО, Ф И и О разделены пробелами. Получить три столбца - Ф, И, О.
Имхо лучшее решение у нее - без ВБА, но с использованием Ворда =)
6. транспонировать
ещё
7. абсолютные/относительные ссылки на ячейки.
8. сцепка амперсендом.
9. Скока строк в екселевском листе, гыгы
вообщем тут грит надо бы какой-нить простенький код, можно с ошибками, можно без. и чтобы чел ответил что делает каждая строка.
2Марос. На вба разбить ФИО просто?
нахуй ворд - это ущербный пролукт Всё в экселе же делается быстренько
на ВБА - просто, но тут гоаздо проще без ВБА - формулами
разбить ФИО формулами? давай решение пость!
С вордом так -
Скопировать столбец в ворд. Выделить таблицу. Выбрать Таблица ->Преобразовать -> Пребразовать таблицу в текст.
Выделить текст, Таблица -> Преобразовать -> Преобразовать текст в таблицу, выбрать разделитель данных - пробел. Скопировать обратно в эксель
Ну или можно еще экспорт импорт в экселе сделать в .txt файл - Там тоже можно разделитель выбирать самому.
Говнозадача походу
Чо за формулы?
формулы марос ща быренько на вба нам напишет. и будет сразу по вба вопросик готовый
Что твориться - имеется формочка, на ней комбобоксы и поле ввода. по результату заполенных данных должен выбраться определенный dbf фаил и данные из него показаться в Excel в слегка раскрашенном виде.
Private Declare Function FileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Private Sub Btn1_Click
Dim Path, PathDB, SQL As String
Dim RowCount, i, j As Integer
Dim SU As Double
List1.Cells.Clear
'Путь к БД (таблицам)
PathDB = "d:\Temp\Excel"
'Текущая строка для вывода выборки
i = 1
If CheckBox1.Value Then
Range("A" & i) = "Отправленные в РКЦ"
i = i + 1
Range("A" & i & ":D" & i).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range("A" & i) = "№ Док"
Range("B" & i) = "Сумма"
Range("C" & i) = "Получатель"
Range("D" & i) = "Назначение платежа"
i = i + 1
j = i
If FileExists(PathDB & "\SENDED.DBF") Then
SQL = "SELECT ND, SU, NAMKOR, NKOR1 FROM SENDED.DBF"
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;CollatingSequence=ASCII;DBQ=" & PathDB & ";DefaultDir=C:\;Deleted=0;Driver={Microsoft dBase Driver (*.dbf)};Dr" _
Array( _
"iverId=277;FIL=dBase IV;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Threads=3;UID=admin;User" _
Array("CommitSync=Yes;" Destination:=Range("A" & i
.CommandText = Array(SQL)
.Name = "Запрос из MyDB"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
' Получим количество строк заполненых запросом пока не поздно
i = i + CInt(.ResultRange.Count / 4)
End With
End If
Range("A" & i & ":D" & i).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
Range("A" & i) = "ИТОГО: " & i - j & " док. на сумму "
SU = 0
While i - j > 0
SU = SU + Range("B" & j).Value
j = j + 1
Wend
Range("A" & i) = Range("A" & i) & SU
i = i + 3
End If
If CheckBox2.Value Then
Range("A" & i) = "Полученные из РКЦ (кредит)"
i = i + 1
Range("A" & i & ":D" & i).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range("A" & i) = "№ Док"
Range("B" & i) = "Сумма"
Range("C" & i) = "Плательщик"
Range("D" & i) = "Назначение платежа"
i = i + 1
j = i
If FileExists(PathDB & "\RECEIVED.DBF") Then
SQL = "SELECT ND, SU, NAMKL, NKOR1 FROM RECEIVED.DBF WHERE LSKL<>'40204810200000000004'"
'OR (LSKL=40204810200000000004 AND DV IS NOT NULL)"
'Можно показать его -
'MsgBox SQL
' Выполняем SQL-запрос
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;CollatingSequence=ASCII;DBQ=" & PathDB & ";DefaultDir=C:\;Deleted=0;Driver={Microsoft dBase Driver (*.dbf)};Dr" _
Array( _
"iverId=277;FIL=dBase IV;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Threads=3;UID=admin;User" _
Array("CommitSync=Yes;" Destination:=Range("A" & i
.CommandText = Array(SQL)
.Name = "Запрос из MyDB"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
' Получим количество строк заполненых запросом пока не поздно
i = i + CInt(.ResultRange.Count / 4)
End With
End If
Range("A" & i & ":D" & i).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
Range("A" & i) = "ИТОГО: " & i - j & " док. на сумму "
SU = 0
While i - j > 0
SU = SU + Range("B" & j).Value
j = j + 1
Wend
Range("A" & i) = Range("A" & i) & SU
i = i + 3
End If
If CheckBox3.Value Then
Range("A" & i) = "Полученные из РКЦ (дебет)"
i = i + 1
Range("A" & i & ":D" & i).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range("A" & i) = "№ Док"
Range("B" & i) = "Сумма"
Range("C" & i) = "Получатель"
Range("D" & i) = "Назначение платежа"
i = i + 1
j = i
If FileExists(PathDB & "\RECEIVED.DBF") Then
SQL = "SELECT ND, SU, NAMKOR, NKOR1 FROM RECEIVED.DBF WHERE LSKL='40204810200000000004'"
'OR (LSKL=40204810200000000004 AND DV IS NOT NULL)"
'Можно показать его -
'MsgBox SQL
' Выполняем SQL-запрос
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;CollatingSequence=ASCII;DBQ=" & PathDB & ";DefaultDir=C:\;Deleted=0;Driver={Microsoft dBase Driver (*.dbf)};Dr" _
Array( _
"iverId=277;FIL=dBase IV;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Threads=3;UID=admin;User" _
Array("CommitSync=Yes;" Destination:=Range("A" & i
.CommandText = Array(SQL)
.Name = "Запрос из MyDB"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
' Получим количество строк заполненых запросом пока не поздно
i = i + CInt(.ResultRange.Count / 4)
End With
End If
Range("A" & i & ":D" & i).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
Range("A" & i) = "ИТОГО: " & i - j & " док. на сумму "
SU = 0
While i - j > 0
SU = SU + Range("B" & j).Value
j = j + 1
Wend
Range("A" & i) = Range("A" & i) & SU
i = i + 3
End If
If CheckBox4.Value Then
Range("A" & i) = "Отказанные в РКЦ"
i = i + 1
Range("A" & i & ":D" & i).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range("A" & i) = "№ Док"
Range("B" & i) = "Сумма"
Range("C" & i) = "Получатель"
'Range("D" & i) = "Назначение платежа"
Range("D" & i) = "Причина возврата"
i = i + 1
j = i
If FileExists(PathDB & "\RETURNED.DBF") Then
SQL = "SELECT ND, SU, NAMKOR, DESCRIPT FROM RETURNED, ERRCODE WHERE SS=CODE"
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;CollatingSequence=ASCII;DBQ=" & PathDB & ";DefaultDir=C:\;Deleted=0;Driver={Microsoft dBase Driver (*.dbf)};Dr" _
A
Если бы это для тебя было бы написать на скору руку как два пальца обоссать, ты бы щас не получал столько, сколько получаешь...
Так что не надо пантов!
А вообще немного не понятно на каком уровне надо уметь писать макросы?
вообще всё зависит от того, в какой отдел берут чела! Если в ИТ, то это один уровень, если в аналы, то это совсем другой уровень и только что приведённый пример сможет написать только чувак из ИТ, а обычному аналитику такие познания НАХЕР не нужны!
Sub Макрос4
'
' Макрос4 Макрос
' Макрос записан 03.08.2006 (sabitov)
'
' Сочетание клавиш: Ctrl+y
'
'Sheets("Данные").Select
'ActiveSheet.ShowAllData
'Sheets("Данные КОПИЯ").Select
Sheets("Данные").Select
Range("a2:df35,a40:df90,a93:df122,a125:df194").Select
Selection.Copy
Sheets("Данные КОПИЯ").Select
Range("B7").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Selection.Sort Key1:=Range("D7" Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Sheets("ГРАФИКИ").Activate
End Sub
---------------------------------
Sub Макрос5
'
' Макрос5 Макрос
' Макрос записан 18.08.2006 (sabitov)
'
' Сочетание клавиш: Ctrl+t
'
Dim a As String
a = ActiveCell.Value
Sheets("Данные КОПИЯ").Select
Selection.AutoFilter Field:=3, Criteria1:=a
Sheets("ГРАФИКИ").Select
End Sub
пожалуй возьму эти два
блин, это в Ексель нуна лезть, что лень ща немного там есть функция типа "НАЙТИ" или "ПОИСК" чтоль, а ещё есьт функция, которая выводит часть строки с такого-то по такой-то символ - вот их инуна юзать
А вот у тебя макросы из разряда проще не бывает - имхо такое давать на собеседовании бред (все есть в справке).
Вот тебе пример с формулами - там их мона подставить естес-но, чтоы не скрывать никаких столбцов:
По поводу вопросов на собеседовании. На собеседовании задавая вопросы типа моих задач через 10 секунд станет ясно, человек писал сам макросы или нет, понимает он хоть что-то в коде или нет. Твоя задача расчитана чисто на ИТ-шника, потому как аналитик такими техническими задачами не занимается и уж тем более не будет писать под это макрос...
p.s. Народ, мож я чё не понимаю, но хотелось бы чтоб ктонть ответил на вопрос, смог бы он с нуля за 4 часа навалять такой макрос, при этом до этого ни разу не сталкиваясь с макросами и VBA?
какой такой?
без знания языка, но при наличии инета - задачи вида "взять отсюда - положить туда" - должны решаться на раз-два (особенно людьми, которые называют себя аналитиками)
Ясен пень был написан не один в один, но основной каркас (вышеперечисленно) этой хрени (там потом расцветку добавил и обработку данных в Edit'e).
P.S.
Ответ на вопрос, что будет чел делать, подразумевает что он программил на VBA и как следсвие знает, что там очень хорошая справка и в первую очередь надо смотреть именно в ней. А про разбирается - это почти ни при чем.
P.P.S. На большинство приведеных вопросов по саму Excel не отвечу.
Выделить столбец в ексель.
Ворд: спецвставка, неформат.текст
^H: <space> -> ^t
^A ^C
Ексель: ^V
Тогда твоё не пройдёт, а предыдущее - ещё как.
ЗЫ. Я тоже так решил, а потом посмотрел решение Фрая - оно получше будет
Скока строк в екселевском листе, гыгы65536
Шаллеру привет...
кароче составил тест. оказалось надо было в виде теста оформить. т.е. с 4-мя вариантами ответов на каждый вопрос. получилась жопа
хаэры дебилы, млять, будут этим тестом удалённо (т.е. дз) тестировать кандидатов.
2.Марос. Если чо у меня есть правильные ответы
Марос. твоя симпатичная версия с формулами зарубается нах"й, если между ФИО больше одного пробела
а вот хуй ты угадал Я её отлично могу расширить на много пробелов Там тока малясь повозиццо с функциями
Пусть в столбце будет данные ФИО с некоторыми глюками в пробелах: где-то один, где-то два (у тебя нет времени считать скока где пробелов). Сделай так, чтобы протянув формулы всё нормально было и не сбивалось
то есть просто несколько пробелов (неивестно скока)?
Есть функция: СЖПРОБЕЛЫ(текст) - ну вместо исходного текста, которую подставлять надо
а где ты сук эти все формулы берёшь? ботал маны, или как-то поиском ищешь?
ёпта. Сержа, открываешь Excel и смотришь все эти формулы - там их до жопы просто
спасибо, Марос. но рыться в этом списке не хочется
так там рыться не надо Там всё упорядочено Я вот всех этих функций не знал, но нашёл за 5 минут
Вот еще вспомнил задачу -Вообще-то самое простое решение выделить этот столбец и Данные->Текст по столбцам.
Есть столбец с ФИО, Ф И и О разделены пробелами. Получить три столбца - Ф, И, О.
Имхо лучшее решение у нее - без ВБА, но с использованием Ворда =)
Странно, что про него никто не вспомнил.
вот это кул =)
Учиться и учиться экселю!
эта пять!
всех умыл!
Оставить комментарий
shadow_sonic
Может у кого есть уже готовые простенькие вопросики для теста по екселю и вба.Ну с екселем сам разберусь (хотя может кто-то предложит готовое). А вот с VBA напряг. Чего можно простого у чела спросить на собеседовании на понимание?
Причём можно часть кода с ошибками дать.
зы. тест будет удалённо на бумажке, к компу не подпустят.
спасибо