2014-09-11 6 views
8

में अंतिम पंक्ति तक फ़ॉर्मूला भरने के लिए वीबीए तो मैं एक प्रोजेक्ट पर काम कर रहा हूं और मैं अपने एमबीए कोड को डेटा एम 3 में मौजूद फॉर्मूला को नीचे खींचने के लिए डेटा के अंत तक नीचे खींचने की कोशिश कर रहा हूं सेट। मैं अपने आधार के रूप में कॉलम एल का उपयोग कर रहा हूं यह निर्धारित करने के लिए कि इसमें डेटा वाला अंतिम सेल क्या है। मेरा सूत्र उनके बीच एक टेक्स्ट कॉमा के साथ दो कोशिकाओं का एक संगत है। तो एक्सेल में मेरे सूत्र = है G3 & "," & L3वीबीए कॉलम

मैं इस सूत्र नीचे आकर्षित करने के लिए तो सेल एम 4 में यह = होगा जी -4 & उत्कृष्टता चाहते हैं "," & L4 सेल M5 = G5 & होगा " , "& एल 5 और इसी तरह।

मेरे कोड लगता है:

Range("$M$3").Formula = Range("G3") & (",") & Range("L3") 

Dim Lastrow As Long 

Application.ScreenUpdating = False 

Lastrow = Range("L" & Rows.Count).End(xlUp).Row 
Range("M4").FormulaR1C1 = Range("G4") & (",") & Range("L4") 
Range("M4").AutoFill Destination:=Range("M4:M" & Lastrow) 
ActiveSheet.AutoFilterMode = False 
Application.ScreenUpdating = True 

मेरे उत्पादन बस नीचे पाठ मान सेल एम 3 से सभी तरह से नीचे डेटा सेट के अंत तक खींच रहा है। मैंने कई घंटों तक फिक्स की तलाश करने की कोशिश की है, लेकिन ऐसा लगता है कि मैं जो कुछ भी करने जा रहा हूं उसे पूरा करने की कोशिश कर रहा हूं।

उत्तर

26

यह वास्तव में एक लाइनर है। इसी तरह की एक प्रश्न के साथ .Autofill

Range("M3:M" & LastRow).Formula = "=G3&"",""&L3" 
+0

धन्यवाद! इससे मुझे जल्द से जल्द अफसोस नहीं होता! :) – MatTtT

+0

हाय सिद्धार्थ, मैं अपने मैक्रो में एक ही फॉर्मूला का उपयोग करने की कोशिश कर रहा हूं, लेकिन यह त्रुटि रेंज ("जे 5: जे" और लास्टरो) प्रदान करता है .फॉर्मूला = "= इफेरॉर (वीएलओकेयूपी (आईएफ (आईएसएजी (खोज (" "कुल "", आरसी [-9])), टीआरआईएम (बाएं (आरसी [-9], FIND ("" "", आरसी [-9] और "" "" ")))," "" "), z43। xlsx!R2C2: R137C5,3, FALSE), "" "") " रन टाइम त्रुटि 1004: विधि श्रेणी वस्तु _global विफल। – nick

+0

क्या आप कृपया मेरी मदद कर सकते हैं कारण क्या हो सकता है? मैं इस एक्सेल और मैक्रो – nick

7

उपयोग करने के लिए लोगों के लिए और (जैसे मैंने किया था) इस पोस्ट को खोजने की आवश्यकता नहीं है; यदि आप अपने डेटासेट को तालिका के रूप में स्वरूपित करते हैं तो आप इसे स्थायी रूप से भी कर सकते हैं।

Range("tablename[columnname]").Formula = "=G3&"",""&L3" 

इसे एक वास्तविक एक लाइनर बनाना। उम्मीद है कि यह किसी की मदद करता है!

6

वैकल्पिक रूप से, आप FillDown

Range("M3") = "=G3&"",""&L3": Range("M3:M" & LastRow).FillDown 
0

कमाल जवाब का उपयोग कर सकते! मुझे एक कॉलम में रिक्त कक्षों को भरने की आवश्यकता थी जहां कोशिकाओं में खिताब थे जो अगले शीर्षक कक्ष तक नीचे खाली कोशिकाओं पर लागू होते थे।

मैंने अपने उदाहरण पत्र के नीचे दिए गए कोड को विकसित करने के लिए उपरोक्त कोड का उपयोग किया। मैंने शीर्षक को कॉपी करने वाले कॉलम को तेज़ी से चलाने के लिए मैक्रो सीटीएल/शाफ्ट/डी के रूप में इस कोड को लागू किया।

--- उदाहरण स्प्रेडशीट ------------ शीर्षक 1 पंक्तियों 2 और 3 में कॉपी किया गया है; शीर्षक 2 को पंक्तियों 5 और 6 में नीचे की कोशिकाओं में कॉपी किया गया है। मैक्रो के दूसरे भाग के बाद सक्रिय सेल शीर्षक 3 सेल है।

' **row** **Column1**  **Column2** 
' 1  Title1   Data 1 for title 1 
' 2     Data 2 for title 1 
' 3     Data 3 for title 1 
' 4  Title2   Data 1 for title 2 
' 5     Data 2 for title 2 
' 6     Data 3 for title 2 
' 7 Title 3   Data 1 for title 3 

----- CopyDown कोड ----------

Sub CopyDown() 
Dim Lastrow As String, FirstRow As String, strtCell As Range 
' 
' CopyDown Macro 
' Copies the current cell to any empty cells below it. 
' 
' Keyboard Shortcut: Ctrl+Shift+D 
' 
    Set strtCell = ActiveCell 
    FirstRow = strtCell.Address 
' Lastrow is address of the *list* of empty cells 
    Lastrow = Range(Selection, Selection.End(xlDown).Offset(-1, 0)).Address 
' MsgBox Lastrow 
    Range(Lastrow).Formula = strtCell.Formula 

    Range(Lastrow).End(xlDown).Select 
End Sub 
-1

सुंदर ज्यादा एक VBA नौसिखिया। जब मैंने "एक-लाइनर" देखा तो मैंने इसे सचमुच लिया।

नोट आप अभी भी Lastrow मंद करने के लिए है कि और ओपी में कोड और साथ कि लगता है तो यह एक-लाइनर है।