2012-12-02 12 views
5

मैं अपना बजट ऑर्ग-मोड में रखता हूं और यह कितना आसान है उससे प्रसन्न हूं। सादगी विफल रहता है, हालांकि, जैसा कि मैं कई कोशिकाओं पर सूत्रों का प्रदर्शन कर रहा हूं; उदाहरण के लिए, मेरी साल सारणी तालिका जो प्रत्येक महीने के लिए समान पकड़-और-गणना सूत्र बनाती है। मैं अपने + टीबीएलएफएम में एक विशाल रेखा के साथ समाप्त होता हूं। यह नाटकीय रूप से छोटा होगा यदि मैं प्रोग्रामेटिक रूप से फॉर्मूला में तर्क पास कर सकता हूं। मैं कुछ इस तरह की तलाश में हूँ, लेकिन काम कर रहा:संगठन मोड स्प्रेडशीट प्रोग्रामेटिक रिमोट संदर्भ

| SEPT | 
| #ERROR | 
#+TBLFM: @2$1=remote(@1,$tf) 

कहीं और मैं सितम्बर नाम के एक मेज है और यह "tf" नाम क्षेत्र है। यह फ़ंक्शन काम करता है यदि मैं "SEPT" के साथ "@ 1" को प्रतिस्थापित करता हूं लेकिन इससे मुझे प्रत्येक कॉलम के लिए सूत्र में एक नई प्रविष्टि की आवश्यकता होगी।

क्या यह काम करने का कोई तरीका है, जहां तालिका स्वयं निर्दिष्ट कर सकती है कि कॉल करने के लिए दूरस्थ तालिका (जैसे कि मेरे उदाहरण में एसईपीटी)?

1) यह दूरदराज के पते

(setq eab/test-remote "@1$1") 

2 के लिए नामित चर की जरूरत है) यह elisp अभिव्यक्ति (ओआरजी-table.el से उपयोग करता है):

+0

बस मेरे सिर के शीर्ष पर, आप टेबल से ऑर्गे-बेबेल कोड ब्लॉक में चर को पारित कर सकते हैं, और आप टीबीएलएफएम में कुछ elisp डाल सकते हैं। इन्हें जोड़ना कुछ हासिल कर सकता है (मुझे नहीं पता कि क्या आप टीबीएलएफएम में इनलाइन ऑर्ग-बेबेल कर सकते हैं, एक खिंचाव की तरह लगता है ...), लेकिन मुझे 'रिमोट' फ़ंक्शन के बारे में पता नहीं है जिसे आप अंतर्निहित होने के लिए कहते हैं । हालांकि, अगर आप इसके बारे में और अधिक पाते हैं, तो मुझे जवाब जानना अच्छा लगेगा, कृपया हमें बताएं। शायद मैं इसे किसी दिन कोशिश करूंगा। –

उत्तर

3

remote का उपयोग किए बिना एक ही प्रभाव के लिए कुछ बदसूरत हैक नहीं है बजाय remote(tablename,@1$1)

(defun eab/test-remote (x) 
    `(car (read 
    (org-table-make-reference 
     (org-table-get-remote-range ,x eab/test-remote) 
     't 't nil)))) 

3) उदाहरण काम किया

| testname1 | testname2 | 
|-----------+-----------| 
|   |   | 
#+TBLFM: @2='(eval (eab/test-remote @1)) 

#+TBLNAME: testname1 
| 1 | 

#+TBLNAME: testname2 
| 2 | 

4) परिणाम

| testname1 | testname2 | 
|-----------+-----------| 
|   1 |   2 | 
4

हाँ, आप के साथ निर्मित remote और आप org-table-get-remote-range उपयोग करने की आवश्यकता ऐसा नहीं कर सकते। उम्मीद है कि इस से बेहतर मेल खाती artscan द्वारा दिए गए जवाब से अपनी आवश्यकताओं (मैं उसकी/उसके उदाहरण का इस्तेमाल किया):

| testname1 | testname2 | 
|-----------+-----------| 
|   1 |   2 | 
#+TBLFM: @2='(org-table-get-remote-range @<$0 (string [email protected] ?1 ?$ ?1)) 

#+TBLNAME: testname1 
| 1 | 

#+TBLNAME: testname2 
| 2 | 

नोट (string [email protected] ?1 ?$ ?1): यह आवश्यक है क्योंकि तालिका सूत्रों मूल्यांकन करने से पहले, सभी प्रतिस्थापन पहले किया जाएगा। यदि आप सीधे "@1$1" का उपयोग करते हैं, तो यह प्रतिस्थापन तंत्र को ट्रिगर करेगा और में इस सेल को तालिका में पहले सेल की सामग्री द्वारा प्रतिस्थापित किया जाएगा।

संबंधित मुद्दे