Цель: воспроизвести рабочую формулу рабочего листа в VBA
=INDEX('C:\Users\Desktop\[BOOK1.xlsx]Sheet1'!$J:$J, MATCH(A2, 'C:\Users\Desktop\[BOOK1.xlsx]Sheet1'!$W:$W,0))
. Вот прогрессивная конструкция, использующая несколько методов. Проверьте окно Immediate VBE для выхода debug.print
.
'assumes that BOOK1 points to a workbook at this point
Dim bcklog1 As Worksheet
Set bcklog1 = BOOK1.Worksheets("backlog1")
Dim result As Variant, test As Variant
Dim frml As String, match_row As Long
'first we construct and evaluate the MATCH portion
frml = "match(A2, " & bcklog1.Range("W:W").Address(external:=True) & ", 0)"
Debug.Print frml
match_row = Evaluate(frml)
Debug.Print match_row
'next we build the remainder of the INDEX/MATCH around the match potion constructed earlier
frml = "index(" & bcklog1.Range("J:J").Address(external:=True) & ", " & frml & ")"
Debug.Print frml
result = Evaluate(frml)
'finally we abandon the Evaluate and use the match_row obtained earlier directly
test = Application.WorksheetFunction.Index(bcklog1.Range("J:J"), match_row, 1)
Debug.Print test
Адреса диапазона внешней рабочей книги вводятся в виде строк с параметром Range.Address с дополнительным external:=True
. Это возвращает правильно отформатированную строку, включая полный путь к рабочей книге, имя рабочего листа с одинарными кавычками, если требуется, и абсолютные ссылки диапазона ячеек.
Вы могли бы написать эти конструкции строк формулы обратно на рабочий лист назначения, предварительно используя знак равенства и присвоение им свойства Range.Formula ячейки назначения . Знак равенства не является обязательным для метода Application.Evaluate .
CREATE TABLE [dbo].[Foo](
[FooId] [int] IDENTITY(1,1) NOT NULL,
[BarId] [int] IDENTITY(1,1) NOT NULL
)
возвраты
Msg 2744, Level 16, State 2, Line 1
Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.
Так, нет, у Вас не может быть двух столбцов идентификационных данных. Можно, конечно, сделать первичный ключ не автоматическим инкрементом (идентификационные данные).
Редактирование: msdn:CREATE ТАБЛИЦА (Transact-SQL) и CREATE TABLE (SQL Server 2000) :
Только один столбец идентификационных данных может быть создан на таблицу.
Первичный ключ не должен быть столбцом идентификационных данных.
у Вас не может быть двух столбцов Identity.
Вы могли получить что-то близко к тому, что Вы хотите с триггером...
в SQL-сервере не возможно иметь больше чем один столбец как идентификационные данные.