mysql - एसक्यूएल क्वेरी के "एक्सप्लस इक्वलेंट" का चयन करें, बी.टी.ओ.से ​​एक इंनियर से जुड़ें बी पर एथ्री=बीथ्री "




excel excel-vba excel-formula (3)

अपनी चादरें मान लें इस प्रकार हैं:

पत्रक 1

Sheet2

Sheet3 Cell A2 में सूत्र दर्ज करें

=IFERROR(INDEX(Sheet1!$A$2:$A$8,MATCH(SMALL(IF(COUNTIF(Sheet1!$C$2:$C$10,Sheet2!$C$2:$C$10),Sheet2!$C$2:$C$10),ROW(1:1)),Sheet1!$C$2:$C$8,0)),"")

और Sheet3 Cell B2 में निम्न सूत्र दर्ज करें

=IFERROR(INDEX(Sheet2!$B$2:$B$8,MATCH(SMALL(IF(COUNTIF(Sheet1!$C$2:$C$10,Sheet2!$C$2:$C$10),Sheet2!$C$2:$C$10),ROW(1:1)),Sheet1!$C$2:$C$8,0)),"")

उपर्युक्त दोनों सूत्र सरणी सूत्र हैं, इसलिए इसे Ctrl + Shift + Enter दबाकर दबाना आवश्यकतानुसार खींचें / कॉपी करें संदर्भ के लिए छवि देखें।

-------------------------------------------------- -------------------------------------------------- -------------------

अगर आप शीट 3 में पहले दो शीट्स के तीसरे कॉलम को प्रदर्शित करना चाहते हैं (जो कि मेरी नमूना पत्र में ID है) तो Cell A2 में निम्न सूत्र दर्ज करें

=IFERROR(SMALL(IF(COUNTIF(Sheet1!$C$2:$C$10,Sheet2!$C$2:$C$10),Sheet2!$C$2:$C$10),ROW(1:1)),"")

यह एक सरणी सूत्र भी है। Cell B2 दर्ज करें

=IFERROR(INDEX(Sheet1!$A$2:$A$8,MATCH(A2,Sheet1!$C$2:$C$8,0)),"")

और Cell C2 दर्ज करें

=IFERROR(INDEX(Sheet2!$B$2:$B$8,MATCH(A2,Sheet2!$C$2:$C$8,0)),"")

आवश्यकतानुसार खींचें / कॉपी करें नीचे चित्र देखें

इसे @ स्कॉटक्रैनर के उत्तर से मिला।

फॉर्मूला और वीबीए का उपयोग किए बिना इसे प्राप्त करने का एक और तरीका है देखें कि क्या यह मदद करता है

एक्सेल में एसक्यूएल "चुनने में शामिल हों" आप कैसे करते हैं? कहो कि मैं टेबल ए से एक कॉल करना चाहता हूँ, टेबल बी से दो को दो और उनके पास तीन रंग हैं।

मुझे क्या करना होगा:

SELECT A.one, B.two
FROM A
INNER JOIN B ON
A.three = B.three

लेकिन तालिकाओं के बजाय मेरे पास एक्सेल शीट में कुछ टैब्स हैं I मैं एक्सेल में उपर्युक्त क्वेरी के बराबर कैसे कर सकता हूं?


वर्कशीट को एसक्यूएल के साथ सीधे पूछने के लिए आप वीबीए और एडीओ का इस्तेमाल कर सकते हैं। सिर्फ एक VBA मॉड्यूल में उप में निम्न कोड जोड़ें। कोड मुख्य रूप से rs.Openrs.Open लाइन और With Worksheets लाइन के अलावा, जिसे आप अपने विशेष परिदृश्य के अनुरूप संशोधित करना चाहिए।

' Set up connection
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")

' Connection string for Excel 2007 onwards .xlsm files
With cn
   .Provider = "Microsoft.ACE.OLEDB.12.0"
   .ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & _
        "Extended Properties=""Excel 12.0 Macro;IMEX=1"";"
    .Open
End With

' Connection string for Excel 97-2003 .xls files
' It should also work with Excel 2007 onwards worksheets
' as long as they have less than 65536 rows
'With cn
'    .Provider = "Microsoft.Jet.OLEDB.4.0"
'    .ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & _
'        "Extended Properties=""Excel 8.0;IMEX=1"";"
'    .Open
'End With

' Create and run the query
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")

' Join the two worksheets - assumed that these are named "Sheet1"
' and "Sheet2", the columns are named "one", "two" and "three"
' and that the results should be output to "Sheet3"
rs.Open "SELECT [Sheet1$].[one], [Sheet2$].[two] " & _
    "FROM [Sheet1$] INNER JOIN [Sheet2$] " & _
    "ON [Sheet1$].[three] = [Sheet2$].[three];", cn

' Output the field names and the results
Dim fld As Object
Dim i As Integer

' Change the worksheet to whichever one you want to output to
With Worksheets("Sheet3")
    .UsedRange.ClearContents

    For Each fld In rs.Fields
        i = i + 1
        .Cells(1, i).Value = fld.Name
    Next fld

    .Cells(2, 1).CopyFromRecordset rs
End With

' Tidy up
rs.Close
cn.Close

"Microsoft ActiveX डेटा ऑब्जेक्ट 2.8 लाइब्रेरी" के संदर्भ को जोड़कर, प्रारंभिक बाध्यकारी का उपयोग करने के लिए कोड को बदला जा सकता है (ऐसा करने के लिए VBA एडिटर में टूल> संदर्भ पर जाएं)। आप निम्न पंक्तियां बदलेंगे जो विभिन्न एडीओ ऑब्जेक्ट्स को घोषित और आरम्भ करेंगी:

Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

Dim rs As ADODB.Recordset

Dim fld As ADODB.Field

मेरी प्राथमिकता जितनी संभव हो सके छोटे कोड का उपयोग करना है ...

आप इसे आज़माकर इसे कर सकते हैं:

SELECT * 
FROM t1 WHERE (id,rev) IN 
( SELECT id, MAX(rev)
  FROM t1
  GROUP BY id
)

मेरे दिमाग में यह कम जटिल है ... पढ़ने और बनाए रखने में आसान है।







mysql sql excel excel-vba excel-formula