Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
If, move and concatenate
Καλημέρα και καλή εβδομάδα, Θα ήθελα την βοήθεια σας. Επισυνάπτω δείγμα Excel. Θέλω να συνενώσω (concatenate) τα δεδομένα της στήλης Β στην B εάν η στήλη Α είναι κενή και δεν υπάρχει η λέξη “offer”, “Offer”, “OFFER” . Στην περίπτωση που υπάρχει η λέξη “offer”, “Offer”, “OFFER” να μετακινηθούν (move) τα κελία από την Β στην Γ. Χρησιμοποιώ την ακόλουθη macro αλλά δυστυχώς δεν είναι αρκετή και δεν εκπληρώνει όλα αυτά που ζητώ. Κώδικας: Sub MoveValues() Dim thing As Range Dim lastARow As Integer 'Determine last Cell In Column B lastARow = Range("B" & Rows.Count).End(xlUp).Row 'Loop through Column B For Each thing In Sheets(1).Range("B2:B" & lastARow) 'Look for OFFER and Offer If thing.Value Like "*OFFER*" Or _ thing.Value Like "*Offer*" Then 'If not found, Move B to C then Clear B Cells(thing.Row, 3) = Cells(thing.Row, 2) Cells(thing.Row, 2) = "" Else 'If found, Do Nothing GoTo LeaveItAlone End If LeaveItAlone: Next 'If empty ActiveCell.FormulaR1C1 = _ "=IF(R[1]C[-6]="""", CONCATENATE(RC[-5], "" "", R[1]C[-5], "" "", R[2]C[-5]), INDIRECT(""B""&ROW()))" Range("G3").Select End Sub Σας ευχαριστώ εκ των προτέρων για την βοήθεια σας. Τελευταία επεξεργασία από το χρήστη Tasos : 04-07-11 στις 11:40. Αιτία: Αφαίρεση της πρ'ωτης γραμμής ([ATTACH]1752[/ATTACH] ) |
#2
|
Φίλε συνονόματε για δες το συνημμένο (χωρίς VBA) αν σου κάνει. και πες μας |
#3
| |||
| |||
Παράθεση:
Στην κολόνα Β πρέπει να είναι όλα τα στοιχεία τα οποία βρίσκονται όπου δεν υπάρχει νούμερο στην κολόνα Α (concatenate), αλλά εάν υπάρχει στην κολόνα Β η λέξη “Offer” ή “OFFER” να μεταφέρονται στην κολόνα Γ μέχρι τον επόμενο αριθμό που θα υπάρξει στην κολόνα Α. Όλα αυτά πρέπει να βρίσκονται κάτω από μια μακροεντολή διότι ο πίνακα συνέχεια αλλά ανά πελάτη/προσφορά. Για περισσότερες πληροφορίες δες το δείγμα excel. |
#4
|
Φίλε μου αν και από ότι κατάλαβα θέλεις λύση με VBA (το αφήνω για τους ειδικούς) Ωστόσο μιας και για μένα αποτελεί πρόκληση το τι μπορούμε να κάνουμε χωρίς VBA, δες και αυτό το συνημμένο Example_2.xls που νομίζω ότι κάνει το ζητούμενο. Ελπίζω να έχω κατανοήσει το επιθυμητό. Θανάσης Σ. |
#5
| |||
| |||
Αγαπητέ Θανάση, Σε ευχαριστώ για την απάντησή σου. Έλαβα την λύση και την παραθέτω για κάποιο άλλον που θα είχε το ίδιο πρόβλημα. Κώδικας: Option Compare Text Option Explicit Sub MoveValues() Dim LR As Long Dim Rw As Long Dim MyStr As String Dim MyOff As String Application.ScreenUpdating = False 'Speeds up macro execution 'Determine last Cell In Column B LR = Range("B" & Rows.Count).End(xlUp).Row 'Loop through Column B from the bottom up For Rw = LR To 2 Step -1 If Cells(Rw, "A") = "" Then MyStr = Cells(Rw, "B") & " " & MyStr If InStr(MyStr, "offer") > 0 Then MyOff = MyStr MyStr = "" End If Else Cells(Rw, "C") = Application.WorksheetFunction.Trim(Cells(Rw, "B") & " " & MyStr) Cells(Rw, "D") = MyOff MyStr = "" MyOff = "" End If Next Rw Range("C:D").WrapText = True With Range("C1:D1") .Value = [{" Department","Offer"}] .Font.Bold = True .Borders(xlEdgeBottom).Weight = xlMedium .ColumnWidth = 43 End With Application.ScreenUpdating = True If MsgBox("Remove Old Data?", vbYesNo, "Confirm") = vbNo Then Exit Sub Range("A3:A" & LR).SpecialCells(xlBlanks).EntireRow.Delete xlShiftUp Range("B:B").Delete xlShiftToLeft End Sub |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Ερωτήματα ] Ερώτημα για concatenate τιμών | jockey17 | Access - Ερωτήσεις / Απαντήσεις | 14 | 23-06-14 20:03 |
[ Εκθέσεις ] Concatenate | devcon | Access - Ερωτήσεις / Απαντήσεις | 0 | 15-05-14 11:56 |
[Συναρτήσεις] CONCATENATE If Left Or | devcon | Excel - Ερωτήσεις / Απαντήσεις | 17 | 24-05-12 05:45 |
Η ώρα είναι 17:25.